]> git.saurik.com Git - cydget.git/commitdiff
Use WTF::String::createCFString as slow GetString.
authorJay Freeman (saurik) <saurik@saurik.com>
Thu, 27 Nov 2014 12:48:24 +0000 (04:48 -0800)
committerJay Freeman (saurik) <saurik@saurik.com>
Thu, 27 Nov 2014 12:48:24 +0000 (04:48 -0800)
LockScreen.mm

index 52f278f6faea9f1077e13280dbf7bbe5b5d1ea1c..ec12dff27d006b36d4bf2e2ca3ee871804cf89f7 100644 (file)
@@ -588,20 +588,49 @@ union ScriptSourceCode {
     } New;
 }; }
 
     } New;
 }; }
 
+class CFStringStruct {
+  private:
+    CFStringRef value_;
+
+  public:
+    CFStringStruct() :
+        value_(NULL)
+    {
+    }
+
+    ~CFStringStruct() {
+    }
+
+    operator CFStringRef() const {
+        return value_;
+    }
+
+    operator NSString *() const {
+        return (NSString *) value_;
+    }
+};
+
 // String Helpers {{{
 static const UChar *(*_ZNK7WebCore6String10charactersEv)(const WebCore::String *);
 static const UChar *(*_ZN7WebCore6String29charactersWithNullTerminationEv)(const WebCore::String *);
 // String Helpers {{{
 static const UChar *(*_ZNK7WebCore6String10charactersEv)(const WebCore::String *);
 static const UChar *(*_ZN7WebCore6String29charactersWithNullTerminationEv)(const WebCore::String *);
+static CFStringStruct (*_ZNK3WTF6String14createCFStringEv)(const WebCore::String *);
 static unsigned (*_ZNK7WebCore6String6lengthEv)(const WebCore::String *);
 
 static bool StringGet(const WebCore::String &string, const UChar *&data, size_t &length) {
     bool terminated;
 
 static unsigned (*_ZNK7WebCore6String6lengthEv)(const WebCore::String *);
 
 static bool StringGet(const WebCore::String &string, const UChar *&data, size_t &length) {
     bool terminated;
 
-    if (_ZNK7WebCore6String10charactersEv != NULL) {
+    if (false) {
+    } else if (_ZNK7WebCore6String10charactersEv != NULL) {
         data = (*_ZNK7WebCore6String10charactersEv)(&string);
         terminated = false;
     } else if (_ZN7WebCore6String29charactersWithNullTerminationEv != NULL) {
         data = (*_ZN7WebCore6String29charactersWithNullTerminationEv)(&string);
         terminated = true;
         data = (*_ZNK7WebCore6String10charactersEv)(&string);
         terminated = false;
     } else if (_ZN7WebCore6String29charactersWithNullTerminationEv != NULL) {
         data = (*_ZN7WebCore6String29charactersWithNullTerminationEv)(&string);
         terminated = true;
+    } else if (_ZNK3WTF6String14createCFStringEv != NULL) {
+        CFStringStruct cf((*_ZNK3WTF6String14createCFStringEv)(&string));
+        data = (const UChar *) [cf cStringUsingEncoding:NSUTF16StringEncoding];
+        length = CFStringGetLength(cf);
+        [cf autorelease];
     } else return false;
 
     if (data == NULL)
     } else return false;
 
     if (data == NULL)
@@ -1234,6 +1263,8 @@ static void $UIWebViewWebViewDelegate$webView$didClearWindowObject$forFrame$(UIW
     if (_ZN7WebCore6String29charactersWithNullTerminationEv == NULL)
         MSHookSymbol(_ZN7WebCore6String29charactersWithNullTerminationEv, "__ZN3WTF6String29charactersWithNullTerminationEv", JavaScriptCore);
 
     if (_ZN7WebCore6String29charactersWithNullTerminationEv == NULL)
         MSHookSymbol(_ZN7WebCore6String29charactersWithNullTerminationEv, "__ZN3WTF6String29charactersWithNullTerminationEv", JavaScriptCore);
 
+    msset(_ZNK3WTF6String14createCFStringEv, JavaScriptCore);
+
     msset(_ZNK7WebCore6String6lengthEv, WebCore);
 
     bool (*_ZNK7WebCore19MediaQueryEvaluator4evalEPKNS_13MediaQueryExpE)(WebCore::MediaQueryEvaluator *, WebCore::String &);
     msset(_ZNK7WebCore6String6lengthEv, WebCore);
 
     bool (*_ZNK7WebCore19MediaQueryEvaluator4evalEPKNS_13MediaQueryExpE)(WebCore::MediaQueryEvaluator *, WebCore::String &);