Author: mlytwyn
Date: Wed Mar 9 00:27:42 2016
New Revision: 39490
URL: http://svn.gna.org/viewcvs/gnustep?rev=39490&view=rev
Log:
Merge with base main branch revision 39486
Modified:
libs/base/branches/gnustep_testplant_branch/Source/GNUmakefile
libs/base/branches/gnustep_testplant_branch/Source/GSAvahiClient.m
libs/base/branches/gnustep_testplant_branch/Source/GSCountedSet.m
libs/base/branches/gnustep_testplant_branch/Source/GSDictionary.m
libs/base/branches/gnustep_testplant_branch/Source/GSFFCallInvocation.m
libs/base/branches/gnustep_testplant_branch/Source/GSFileHandle.m
Modified: libs/base/branches/gnustep_testplant_branch/Source/GNUmakefile
URL:
http://svn.gna.org/viewcvs/gnustep/libs/base/branches/gnustep_testplant_branch/Source/GNUmakefile?rev=39490&r1=39489&r2=39490&view=diff
==============================================================================
--- libs/base/branches/gnustep_testplant_branch/Source/GNUmakefile
(original)
+++ libs/base/branches/gnustep_testplant_branch/Source/GNUmakefile Wed Mar
9 00:27:42 2016
@@ -132,6 +132,7 @@
NSData+GNUstepBase.h \
NSDebug+GNUstepBase.h \
NSFileHandle+GNUstepBase.h \
+NSHashTable+GNUstepBase.h \
NSLock+GNUstepBase.h \
NSMutableString+GNUstepBase.h \
NSNetServices+GNUstepBase.h \
Modified: libs/base/branches/gnustep_testplant_branch/Source/GSAvahiClient.m
URL:
http://svn.gna.org/viewcvs/gnustep/libs/base/branches/gnustep_testplant_branch/Source/GSAvahiClient.m?rev=39490&r1=39489&r2=39490&view=diff
==============================================================================
--- libs/base/branches/gnustep_testplant_branch/Source/GSAvahiClient.m
(original)
+++ libs/base/branches/gnustep_testplant_branch/Source/GSAvahiClient.m Wed Mar
9 00:27:42 2016
@@ -174,13 +174,8 @@
errNo);
}
[_lock unlock];
-
- if ((_client == NULL) || ((errNo != NULL) && (*errNo != 0)))
- {
- NSWarnLog(@"client allocation error: %ld", *errNo);
}
}
-}
- (id) delegate
{
Modified: libs/base/branches/gnustep_testplant_branch/Source/GSCountedSet.m
URL:
http://svn.gna.org/viewcvs/gnustep/libs/base/branches/gnustep_testplant_branch/Source/GSCountedSet.m?rev=39490&r1=39489&r2=39490&view=diff
==============================================================================
--- libs/base/branches/gnustep_testplant_branch/Source/GSCountedSet.m
(original)
+++ libs/base/branches/gnustep_testplant_branch/Source/GSCountedSet.m Wed Mar
9 00:27:42 2016
@@ -29,6 +29,7 @@
#import "Foundation/NSException.h"
#import "Foundation/NSPortCoder.h"
+#import "GSPrivate.h"
#define GSI_MAP_RETAIN_VAL(M, X)
#define GSI_MAP_RELEASE_VAL(M, X)
@@ -393,4 +394,25 @@
return GSIMapCountByEnumeratingWithStateObjectsCount
(&map, state, stackbuf, len);
}
+
+- (NSUInteger) sizeInBytesExcluding: (NSHashTable*)exclude
+{
+ NSUInteger size = GSPrivateMemorySize(self, exclude);
+
+ if (size > 0)
+ {
+ GSIMapEnumerator_t enumerator = GSIMapEnumeratorForMap(&map);
+ GSIMapNode node = GSIMapEnumeratorNextNode(&enumerator);
+
+ size += GSIMapSize(&map) - sizeof(map);
+ while (node != 0)
+ {
+ size += [node->key.obj sizeInBytesExcluding: exclude];
+ node = GSIMapEnumeratorNextNode(&enumerator);
+ }
+ GSIMapEndEnumerator(&enumerator);
+ }
+ return size;
+}
+
@end
Modified: libs/base/branches/gnustep_testplant_branch/Source/GSDictionary.m
URL:
http://svn.gna.org/viewcvs/gnustep/libs/base/branches/gnustep_testplant_branch/Source/GSDictionary.m?rev=39490&r1=39489&r2=39490&view=diff
==============================================================================
--- libs/base/branches/gnustep_testplant_branch/Source/GSDictionary.m
(original)
+++ libs/base/branches/gnustep_testplant_branch/Source/GSDictionary.m Wed Mar
9 00:27:42 2016
@@ -33,6 +33,8 @@
#import "Foundation/NSKeyedArchiver.h"
#import "GNUstepBase/GSObjCRuntime.h"
+
+#import "GSPrivate.h"
/*
* The 'Fastmap' stuff provides an inline implementation of a mapping
@@ -364,6 +366,28 @@
return GSIMapCountByEnumeratingWithStateObjectsCount
(&map, state, stackbuf, len);
}
+
+- (NSUInteger) sizeInBytesExcluding: (NSHashTable*)exclude
+{
+ NSUInteger size = GSPrivateMemorySize(self, exclude);
+
+ if (size > 0)
+ {
+ GSIMapEnumerator_t enumerator = GSIMapEnumeratorForMap(&map);
+ GSIMapNode node = GSIMapEnumeratorNextNode(&enumerator);
+
+ size += GSIMapSize(&map) - sizeof(map);
+ while (node != 0)
+ {
+ size += [node->key.obj sizeInBytesExcluding: exclude];
+ size += [node->value.obj sizeInBytesExcluding: exclude];
+ node = GSIMapEnumeratorNextNode(&enumerator);
+ }
+ GSIMapEndEnumerator(&enumerator);
+ }
+ return size;
+}
+
@end
@implementation GSMutableDictionary
Modified:
libs/base/branches/gnustep_testplant_branch/Source/GSFFCallInvocation.m
URL:
http://svn.gna.org/viewcvs/gnustep/libs/base/branches/gnustep_testplant_branch/Source/GSFFCallInvocation.m?rev=39490&r1=39489&r2=39490&view=diff
==============================================================================
--- libs/base/branches/gnustep_testplant_branch/Source/GSFFCallInvocation.m
(original)
+++ libs/base/branches/gnustep_testplant_branch/Source/GSFFCallInvocation.m
Wed Mar 9 00:27:42 2016
@@ -425,6 +425,11 @@
case _C_DBL:
vatype->type = __VAdouble;
break;
+#if __GNUC__ > 2 && defined(_C_BOOL)
+ case _C_BOOL:
+ vatype->type = __VAuchar;
+ break;
+#endif
case _C_STRUCT_B:
vatype->structSize = objc_sizeof_type (sel_type);
if (vatype->structSize > sizeof (long)
@@ -580,15 +585,19 @@
case _C_ID:
av_start_ptr(alist, imp, id, retval);
break;
+
case _C_CLASS:
av_start_ptr(alist, imp, Class, retval);
break;
+
case _C_SEL:
av_start_ptr(alist, imp, SEL, retval);
break;
+
case _C_PTR:
av_start_ptr(alist, imp, void *, retval);
break;
+
case _C_CHARPTR:
av_start_ptr(alist, imp, char *, retval);
break;
@@ -605,6 +614,9 @@
CASE_TYPE(_C_ULNG_LNG, unsigned long long, av_start_ulonglong)
CASE_TYPE(_C_FLT, float, av_start_float)
CASE_TYPE(_C_DBL, double, av_start_double)
+#if __GNUC__ > 2 && defined(_C_BOOL)
+ CASE_TYPE(_C_BOOL, _Bool, av_start_uchar)
+#endif
case _C_STRUCT_B:
{
@@ -619,9 +631,11 @@
info[0].size, split, retval);
break;
}
+
case _C_VOID:
av_start_void(alist, imp);
break;
+
default:
NSCAssert1(0, @"GSFFCallInvocation: Return Type '%s' not implemented",
info[0].type);
@@ -660,6 +674,7 @@
av_ptr(alist, id, obj);
break;
}
+
case _C_CLASS:
{
Class obj;
@@ -667,6 +682,7 @@
av_ptr(alist, Class, obj);
break;
}
+
case _C_SEL:
{
SEL sel;
@@ -674,6 +690,7 @@
av_ptr(alist, SEL, sel);
break;
}
+
case _C_PTR:
{
void *ptr;
@@ -681,6 +698,7 @@
av_ptr(alist, void *, ptr);
break;
}
+
case _C_CHARPTR:
{
char *ptr;
@@ -701,11 +719,15 @@
CASE_TYPE(_C_ULNG_LNG, unsigned long long, av_ulonglong)
CASE_TYPE(_C_FLT, float, av_float)
CASE_TYPE(_C_DBL, double, av_double)
+#if __GNUC__ > 2 && defined(_C_BOOL)
+ CASE_TYPE(_C_BOOL, _Bool, av_uchar)
+#endif
case _C_STRUCT_B:
_av_struct(alist, size,
info[i+1].align, datum);
break;
+
default:
NSCAssert1(0, @"GSFFCallInvocation: Type '%s' not implemented",
type);
@@ -994,24 +1016,28 @@
[invocation setArgument: &obj atIndex: i];
break;
}
+
case _C_CLASS:
{
Class obj = va_arg_ptr (args, Class);
[invocation setArgument: &obj atIndex: i];
break;
}
+
case _C_SEL:
{
SEL sel = va_arg_ptr (args, SEL);
[invocation setArgument: &sel atIndex: i];
break;
}
+
case _C_PTR:
{
void *ptr = va_arg_ptr (args, void *);
[invocation setArgument: &ptr atIndex: i];
break;
}
+
case _C_CHARPTR:
{
char *ptr = va_arg_ptr (args, char *);
@@ -1031,6 +1057,9 @@
CASE_TYPE(_C_ULNG_LNG, unsigned long long, va_arg_ulonglong)
CASE_TYPE(_C_FLT, float, va_arg_float)
CASE_TYPE(_C_DBL, double, va_arg_double)
+#if __GNUC__ > 2 && defined(_C_BOOL)
+ CASE_TYPE(_C_BOOL, _Bool, va_arg_uchar)
+#endif
case _C_STRUCT_B:
{
@@ -1039,6 +1068,7 @@
[invocation setArgument: ptr atIndex: i];
break;
}
+
default:
NSCAssert1(0, @"GSFFCallInvocation: Type '%s' not implemented",
type);
@@ -1090,10 +1120,14 @@
CASE_TYPE(_C_ULNG_LNG, unsigned long long, va_return_ulonglong)
CASE_TYPE(_C_FLT, float, va_return_float)
CASE_TYPE(_C_DBL, double, va_return_double)
+#if __GNUC__ > 2 && defined(_C_BOOL)
+ CASE_TYPE(_C_BOOL, _Bool, va_return_uchar)
+#endif
case _C_STRUCT_B:
_va_return_struct(args, info[0].size, info[0].align, retval);
break;
+
case _C_VOID:
/* FIXME ... evil hack ... where the compiler did not know
* selector types, if may have had to assume a method returning
@@ -1111,6 +1145,7 @@
va_return_void(args);
}
break;
+
default:
NSCAssert1(0, @"GSFFCallInvocation: Return Type '%s' not implemented",
info[0].type);
Modified: libs/base/branches/gnustep_testplant_branch/Source/GSFileHandle.m
URL:
http://svn.gna.org/viewcvs/gnustep/libs/base/branches/gnustep_testplant_branch/Source/GSFileHandle.m?rev=39490&r1=39489&r2=39490&view=diff
==============================================================================
--- libs/base/branches/gnustep_testplant_branch/Source/GSFileHandle.m
(original)
+++ libs/base/branches/gnustep_testplant_branch/Source/GSFileHandle.m Wed Mar
9 00:27:42 2016
@@ -359,11 +359,14 @@
DESTROY(address);
DESTROY(service);
DESTROY(protocol);
-
- [self finalize];
-
DESTROY(readInfo);
DESTROY(writeInfo);
+
+ /* Finalize *after* destroying readInfo and writeInfo so that, if the
+ * file handle needs to be closed, we don't generate any notifications
+ * containing the deallocated object. Tnanks to david for this fix.
+ */
+ [self finalize];
[super dealloc];
}
_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs