patch: kjs regexp leak fix

Maciej Stachowiak mjs at apple.com
Mon Nov 3 23:49:21 CET 2003


Fixes a leak when doing regexp matching on strings:

-------------- next part --------------
Index: ChangeLog
===================================================================
RCS file: /local/home/cvs/Labyrinth/JavaScriptCore/ChangeLog,v
retrieving revision 1.372
diff -u -p -r1.372 ChangeLog
--- ChangeLog	2003/10/30 18:42:38	1.372
+++ ChangeLog	2003/10/30 20:53:37
@@ -1,3 +1,13 @@
+2003-10-30  Maciej Stachowiak  <mjs at apple.com>
+
+        Reviewed by NOBODY (OOPS!).
+
+	- fixed 3427069 - browsing mp3.com causes leaks (KJS)
+	
+        * kjs/string_object.cpp:
+        (StringProtoFuncImp::call): Don't do an early return, since that
+	could leak a temporary regexp.
+
 2003-10-29  Maciej Stachowiak  <mjs at apple.com>
 
         Reviewed by Darin.
Index: kjs/string_object.cpp
===================================================================
RCS file: /local/home/cvs/Labyrinth/JavaScriptCore/kjs/string_object.cpp,v
retrieving revision 1.17
diff -u -p -r1.17 kjs/string_object.cpp
--- kjs/string_object.cpp	2003/08/08 15:21:12	1.17
+++ kjs/string_object.cpp	2003/10/30 20:53:37
@@ -276,10 +276,12 @@ Value StringProtoFuncImp::call(ExecState
       // Exec
       if ((reg->flags() & RegExp::Global) == 0) {
 	// case without 'g' flag is handled like RegExp.prototype.exec
-	if (mstr.isNull())
-	  return Null(); // no match
-	regExpObj->setSubPatterns(reg->subPatterns());
-	result = regExpObj->arrayOfMatches(exec,mstr);
+	if (mstr.isNull()) {
+	  result = Null();
+	} else {
+	  regExpObj->setSubPatterns(reg->subPatterns());
+	  result = regExpObj->arrayOfMatches(exec,mstr);
+	}
       } else {
 	// return array of matches
 	List list;
-------------- next part --------------



More information about the Khtml-devel mailing list