Author: rfm
Date: Fri Apr 7 16:27:20 2017
New Revision: 40453
URL: http://svn.gna.org/viewcvs/gnustep?rev=40453&view=rev
Log:
Fix leak
Modified:
libs/sqlclient/trunk/ChangeLog
libs/sqlclient/trunk/SQLClient.m
Modified: libs/sqlclient/trunk/ChangeLog
URL:
http://svn.gna.org/viewcvs/gnustep/libs/sqlclient/trunk/ChangeLog?rev=40453&r1=40452&r2=40453&view=diff
==============================================================================
--- libs/sqlclient/trunk/ChangeLog (original)
+++ libs/sqlclient/trunk/ChangeLog Fri Apr 7 16:27:20 2017
@@ -1,8 +1,14 @@
+2017-04-07 Richard Frith-Macdonald <[email protected]>
+
+ * SQLClient.m:
+ Fix leak of SQLString instances caused by inheriting memory management
+ methods from the literal string class.
+
2017-03-06 Richard Frith-Macdonald <[email protected]>
- SQLClient.h:
- SQLClient.m:
- SQLClientPool.m:
+ * SQLClient.h:
+ * SQLClient.m:
+ * SQLClientPool.m:
Add new +literal: and -literal: methods to make a normal string into
one recognised as suitable for use literally (ie without quoting) in
an SQL query/statement.
Modified: libs/sqlclient/trunk/SQLClient.m
URL:
http://svn.gna.org/viewcvs/gnustep/libs/sqlclient/trunk/SQLClient.m?rev=40453&r1=40452&r2=40453&view=diff
==============================================================================
--- libs/sqlclient/trunk/SQLClient.m (original)
+++ libs/sqlclient/trunk/SQLClient.m Fri Apr 7 16:27:20 2017
@@ -992,6 +992,8 @@
if (Nil == LitStringClass)
{
+ Class root = [NSObject class];
+
/* Find the literal string class used by the foundation library.
*/
LitStringClass = object_getClass(@"test");
@@ -1001,6 +1003,22 @@
SQLStringClass = (Class)objc_allocateClassPair(
LitStringClass, "SQLString", 0);
objc_registerClassPair(SQLStringClass);
+
+ /* The the NSObject memory management methods because the
+ * literal string doesn't get retained/released.
+ */
+ class_replaceMethod(SQLStringClass, @selector(retain),
+ class_getMethodImplementation(root, @selector(retain)),
+ "@@:");
+ class_replaceMethod(SQLStringClass, @selector(autorelease),
+ class_getMethodImplementation(root, @selector(autorelease)),
+ "@@:");
+ class_replaceMethod(SQLStringClass, @selector(release),
+ class_getMethodImplementation(root, @selector(release)),
+ "v@:");
+ class_replaceMethod(SQLStringClass, @selector(dealloc),
+ class_getMethodImplementation(root, @selector(dealloc)),
+ "v@:");
}
if (nil == null)
_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs