From c425d7fcab2ee34694562976700a77daace64d95 Mon Sep 17 00:00:00 2001 From: "brendan%mozilla.org" Date: Fri, 6 Jan 2006 06:34:35 +0000 Subject: [PATCH] Fix GC_MARK_DEBUG code (315783, NPOTB but r=bz). git-svn-id: svn://10.0.0.236/branches/MOZILLA_1_8_BRANCH@187061 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/js/src/jsxml.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/mozilla/js/src/jsxml.c b/mozilla/js/src/jsxml.c index ca93a90b6bf..af1c1d07379 100644 --- a/mozilla/js/src/jsxml.c +++ b/mozilla/js/src/jsxml.c @@ -4851,12 +4851,26 @@ xml_mark_vector(JSContext *cx, JSXML **vec, uint32 len, void *arg) elt = vec[i]; { #ifdef GC_MARK_DEBUG - char buf[100]; - JSXMLQName *qn = elt->name; + char buf[120]; - JS_snprintf(buf, sizeof buf, "%s::%s", - qn->uri ? JS_GetStringBytes(qn->uri) : "*", - JS_GetStringBytes(qn->localName)); + if (elt->xml_class == JSXML_CLASS_LIST) { + strcpy(buf, js_XMLList_str); + } else if (JSXML_HAS_NAME(elt)) { + JSXMLQName *qn = elt->name; + + JS_snprintf(buf, sizeof buf, "%s::%s", + qn->uri ? JS_GetStringBytes(qn->uri) : "*", + JS_GetStringBytes(qn->localName)); + } else { + JSString *str = elt->xml_value; + size_t srclen = JSSTRING_LENGTH(str); + size_t dstlen = sizeof buf; + + if (srclen >= sizeof buf / 6) + srclen = sizeof buf / 6 - 1; + js_DeflateStringToBuffer(cx, JSSTRING_CHARS(str), srclen, + buf, &dstlen); + } #else const char *buf = NULL; #endif