[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/kjs
From: Maks Orlovich <maksim () kde ! org>
Date: 2010-11-01 17:04:04
Message-ID: 20101101170404.E4555AC89E () svn ! kde ! org
[Download RAW message or body]
SVN commit 1191996 by orlovich:
Make sure to give global constructors like Object, String, etc., global names, since \
at least one crazily overengineered marshalling system uses them as keys.
Fixes search on devexpress.com support center.
BUG: 255661
FIXED-IN: 4.5.3
M +23 -15 interpreter.cpp
M +3 -0 interpreter.h
--- trunk/KDE/kdelibs/kjs/interpreter.cpp #1191995:1191996
@@ -343,6 +343,14 @@
return m_globalObject;
}
+void Interpreter::putNamedConstructor(const char* name, JSObject* value)
+{
+ assert(value->implementsCall());
+ Identifier i(name);
+ m_globalObject->put(&m_globalExec, i, value, DontEnum);
+ static_cast<InternalFunctionImp*>(value)->setFunctionName(i);
+}
+
void Interpreter::initGlobalObject()
{
FunctionPrototype *funcProto = new FunctionPrototype(&m_globalExec);
@@ -401,21 +409,21 @@
// ECMA 15.3.4.1
funcProto->put(&m_globalExec, m_globalExec.propertyNames().constructor, \
m_Function, DontEnum);
- m_globalObject->put(&m_globalExec, "Object", m_Object, DontEnum);
- m_globalObject->put(&m_globalExec, "Function", m_Function, DontEnum);
- m_globalObject->put(&m_globalExec, "Array", m_Array, DontEnum);
- m_globalObject->put(&m_globalExec, "Boolean", m_Boolean, DontEnum);
- m_globalObject->put(&m_globalExec, "String", m_String, DontEnum);
- m_globalObject->put(&m_globalExec, "Number", m_Number, DontEnum);
- m_globalObject->put(&m_globalExec, "Date", m_Date, DontEnum);
- m_globalObject->put(&m_globalExec, "RegExp", m_RegExp, DontEnum);
- m_globalObject->put(&m_globalExec, "Error", m_Error, DontEnum);
- m_globalObject->put(&m_globalExec, "EvalError",m_EvalError, DontEnum);
- m_globalObject->put(&m_globalExec, "RangeError",m_RangeError, DontEnum);
- m_globalObject->put(&m_globalExec, "ReferenceError",m_ReferenceError, DontEnum);
- m_globalObject->put(&m_globalExec, "SyntaxError",m_SyntaxError, DontEnum);
- m_globalObject->put(&m_globalExec, "TypeError",m_TypeError, DontEnum);
- m_globalObject->put(&m_globalExec, "URIError",m_UriError, DontEnum);
+ putNamedConstructor("Object", m_Object);
+ putNamedConstructor("Function", m_Function);
+ putNamedConstructor("Array", m_Array);
+ putNamedConstructor("Boolean", m_Boolean);
+ putNamedConstructor("String", m_String);
+ putNamedConstructor("Number", m_Number);
+ putNamedConstructor("Date", m_Date);
+ putNamedConstructor("RegExp", m_RegExp);
+ putNamedConstructor("Error", m_Error);
+ putNamedConstructor("EvalError",m_EvalError);
+ putNamedConstructor("RangeError",m_RangeError);
+ putNamedConstructor("ReferenceError",m_ReferenceError);
+ putNamedConstructor("SyntaxError",m_SyntaxError);
+ putNamedConstructor("TypeError",m_TypeError);
+ putNamedConstructor("URIError",m_UriError);
// Set the constructorPropertyName property of all builtin constructors
objProto->put(&m_globalExec, m_globalExec.propertyNames().constructor, m_Object, \
DontEnum | DontDelete | ReadOnly);
--- trunk/KDE/kdelibs/kjs/interpreter.h #1191995:1191996
@@ -460,6 +460,9 @@
unsigned m_startTimeoutCheckCount;
unsigned m_pauseTimeoutCheckCount;
+ // Helper for setting constructors, making sure their function names are OK
+ void putNamedConstructor(const char* name, JSObject* value);
+
ProtectedPtr<JSObject> m_Object;
ProtectedPtr<JSObject> m_Function;
ProtectedPtr<JSObject> m_Array;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic