Author: rfm
Date: Thu Apr 28 22:35:00 2016
New Revision: 39706
URL: http://svn.gna.org/viewcvs/gnustep?rev=39706&view=rev
Log:
Add check and exception for repeated deallocation of a pool.
Modified:
libs/base/trunk/ChangeLog
libs/base/trunk/Source/NSAutoreleasePool.m
Modified: libs/base/trunk/ChangeLog
URL:
http://svn.gna.org/viewcvs/gnustep/libs/base/trunk/ChangeLog?rev=39706&r1=39705&r2=39706&view=diff
==============================================================================
--- libs/base/trunk/ChangeLog (original)
+++ libs/base/trunk/ChangeLog Thu Apr 28 22:35:00 2016
@@ -1,3 +1,9 @@
+2016-04-28 Richard Frith-Macdonald <[email protected]>
+
+ * Source/NSAutoreleasePool.m:
+ Check for a pool being deallocated when it has already been
+ deallocated (and raise an exception).
+
2016-04-23 Marcus Mueller <[email protected]>
* Source/GSAvahiNetService.m: Avahi-based NSNetServices did crash
@@ -6,12 +12,12 @@
2016-04-08 Richard Frith-Macdonald <[email protected]>
- * Source/NSUserDefaults.m
+ * Source/NSUserDefaults.m:
Remove redundant code. Log domain names when debug is enabled.
2016-04-08 Riccardo Mottola <[email protected]>
- * Source/NSUserDefaults.m
+ * Source/NSUserDefaults.m:
Skip nil domains explicitely and do not use nil values to look them up.
2016-04-04 Niels Grewe <[email protected]>
Modified: libs/base/trunk/Source/NSAutoreleasePool.m
URL:
http://svn.gna.org/viewcvs/gnustep/libs/base/trunk/Source/NSAutoreleasePool.m?rev=39706&r1=39705&r2=39706&view=diff
==============================================================================
--- libs/base/trunk/Source/NSAutoreleasePool.m (original)
+++ libs/base/trunk/Source/NSAutoreleasePool.m Thu Apr 28 22:35:00 2016
@@ -295,9 +295,14 @@
+ (id) allocWithZone: (NSZone*)zone
{
struct autorelease_thread_vars *tv = ARP_THREAD_VARS;
+
if (tv->pool_cache_count)
- return pop_pool_from_cache (tv);
-
+ {
+ NSAutoreleasePool *p = pop_pool_from_cache (tv);
+
+ NSAssert(++(p->_released_count) == 0, @"corrupted pool in cache");
+ return p;
+ }
return NSAllocateObject (self, 0, zone);
}
@@ -720,6 +725,13 @@
_parent = nil;
}
+ if (_released_count-- != 0)
+ {
+ _released_count++;
+ [NSException raise: NSInternalInconsistencyException
+ format: @"NSAutoreleasePool -dealloc of deallocated pool"];
+ }
+
/* Don't deallocate ourself, just save us for later use. */
push_pool_to_cache (tv, self);
GSNOSUPERDEALLOC;
_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs