Reviewed by Kevin.
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 9 Oct 2004 22:17:44 +0000 (22:17 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 9 Oct 2004 22:17:44 +0000 (22:17 +0000)
        - fixed <rdar://problem/3804661> REGRESSION: JavaScriptCore framework now has two init routines

        * bindings/NP_jsobject.cpp: Fixed unnecessarily-complex globals set up that was
        creating an init routine.

        * kjs/ustring.cpp: Changed around the UString::Rep::empty construction to not
        require a global constructor that creates an init routine.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@7798 268f45cc-cd09-0410-ab3c-d52691b4dbfc

JavaScriptCore/ChangeLog
JavaScriptCore/bindings/NP_jsobject.cpp
JavaScriptCore/kjs/ustring.cpp

index db099d66660fb593f4da8014e57ba63a722638a3..db26d69e48ca0cdb67da51f3d81ffdfadffb6022 100644 (file)
@@ -1,3 +1,15 @@
+2004-10-09  Darin Adler  <darin@apple.com>
+
+        Reviewed by Kevin.
+
+        - fixed <rdar://problem/3804661> REGRESSION: JavaScriptCore framework now has two init routines
+
+        * bindings/NP_jsobject.cpp: Fixed unnecessarily-complex globals set up that was
+        creating an init routine.
+
+        * kjs/ustring.cpp: Changed around the UString::Rep::empty construction to not
+        require a global constructor that creates an init routine.
+
 2004-10-09  Darin Adler  <darin@apple.com>
 
         Reviewed by Kevin.
index e1ea07928b442121491b34c2a7c5fbc79b95559a..001cdb8e39d6af64ba2cd76fa12fdca0409ed402 100644 (file)
@@ -71,8 +71,7 @@ static NPClass _javascriptClass = {
     0
 };
 
-static NPClass *javascriptClass = &_javascriptClass;
-NPClass *NPScriptObjectClass = javascriptClass;
+NPClass *NPScriptObjectClass = &_javascriptClass;
 
 Identifier identiferFromNPIdentifier(const NPUTF8 *name)
 {
index 303621b973389a6af1ce5dcfd9b279d3dd9c5dc6..63ad2b20745afef14f36c73f55bbaa65c2b6a2da 100644 (file)
@@ -142,9 +142,11 @@ bool KJS::operator==(const KJS::CString& c1, const KJS::CString& c2)
   return len == c2.size() && (len == 0 || memcmp(c1.c_str(), c2.c_str(), len) == 0);
 }
 
-static UChar dummy;
+// Hack here to avoid a global with a constructor; point to an unsigned short instead of a UChar.
+static unsigned short almostUChar;
+static UChar *const nonNullUCharPointer = reinterpret_cast<UChar *>(&almostUChar);
 UString::Rep UString::Rep::null = { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 };
-UString::Rep UString::Rep::empty = { 0, 0, 1, 0, 0, 0, &dummy, 0, 0, 0, 0 };
+UString::Rep UString::Rep::empty = { 0, 0, 1, 0, 0, 0, nonNullUCharPointer, 0, 0, 0, 0 };
 const int normalStatBufferSize = 4096;
 static char *statBuffer = 0;
 static int statBufferSize = 0;