diff --git a/js/jsd/jsd_obj.c b/js/jsd/jsd_obj.c index 00a5d8c77a3f..9a9abe5154cb 100644 --- a/js/jsd/jsd_obj.c +++ b/js/jsd/jsd_obj.c @@ -140,6 +140,7 @@ jsd_Constructing(JSDContext* jsdc, JSContext *cx, JSObject *obj, JSScript* script; JSDScript* jsdscript; const char* ctorURL; + JSString* ctorNameStr; const char* ctorName; JSD_LOCK_OBJECTS(jsdc); @@ -156,11 +157,11 @@ jsd_Constructing(JSDContext* jsdc, JSContext *cx, JSObject *obj, JSD_LOCK_SCRIPTS(jsdc); jsdscript = jsd_FindOrCreateJSDScript(jsdc, cx, script, fp); JSD_UNLOCK_SCRIPTS(jsdc); - if( jsdscript ) - { - ctorName = jsd_GetScriptFunctionId(jsdc, jsdscript); - if( ctorName ) + if( jsdscript && (ctorNameStr = jsd_GetScriptFunctionId(jsdc, jsdscript)) ) { + if( (ctorName = JS_EncodeString(cx, ctorNameStr)) ) { jsdobj->ctorName = jsd_AddAtom(jsdc, ctorName); + JS_free(cx, (void *) ctorName); + } } jsdobj->ctorLineno = JS_GetScriptBaseLineNumber(cx, script); }