Reviewed by Chris.
authorkdecker <kdecker@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 18 Nov 2004 19:29:58 +0000 (19:29 +0000)
committerkdecker <kdecker@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 18 Nov 2004 19:29:58 +0000 (19:29 +0000)
fixed: <rdar://problem/3841842> getPropertyID expensive

        * kwq/DOM-CSS.mm:
        (getPropertyID): avoid unnecessary memory allocations by using a fixed-sized stack based buffer.

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

WebCore/ChangeLog-2005-08-23
WebCore/kwq/DOM-CSS.mm

index db07908..78730c5 100644 (file)
@@ -1,3 +1,12 @@
+2004-11-18  Kevin Decker  <kdecker@apple.com>
+
+        Reviewed by Chris.
+
+       fixed: <rdar://problem/3841842> getPropertyID expensive
+
+        * kwq/DOM-CSS.mm:
+        (getPropertyID): avoid unnecessary memory allocations by using a fixed-sized stack based buffer.
+
 2004-11-17  David Hyatt  <hyatt@apple.com>
 
        Improve responsiveness by being willing to break out of the tokenizer.  (This patch was landed already
index a0297ed..58e3d4a 100644 (file)
@@ -97,8 +97,19 @@ using DOM::StyleSheetListImpl;
 
 static inline int getPropertyID(NSString *string)
 {
-    const char *s = [string UTF8String];
-    return DOM::getPropertyID(s, strlen(s));
+    //use a fixed sized buffer to avoid malloc() allocations done by -[NSString UTF8String]
+    static char buffer[1024];
+    BOOL success = CFStringGetCString((CFStringRef)string, buffer, 1023, kCFStringEncodingUTF8);
+   
+    // CFStringGetCString returns false if conversion isn't possible
+    // (due to conversion error, or not enough space in the provided buffer)
+    // fall back to UTF8String instead
+    if (!success) {
+        const char *s = [string UTF8String];
+        return DOM::getPropertyID(s, strlen(s));
+    }
+
+    return DOM::getPropertyID(buffer, strlen(buffer));
 }
 
 //------------------------------------------------------------------------------------------