adium 4978:f9f4bea878af: Some more fixes to ESObjectWithProperties:
commits at adium.im
commits at adium.im
Wed Aug 8 20:41:15 UTC 2012
details: http://hg.adium.im/adium/rev/f9f4bea878af
revision: 4978:f9f4bea878af
branch: (none)
author: Thijs Alkemade <thijsalkemade at gmail.com>
date: Wed Aug 08 22:40:31 2012 +0200
Some more fixes to ESObjectWithProperties:
- Remove incorrect cast to NSInteger
- Zero-initialize the buffers
- Remove redundant code where calling methods nil would be work
diffs (100 lines):
diff -r e253db549c60 -r f9f4bea878af Frameworks/Adium Framework/Source/ESObjectWithProperties.m
--- a/Frameworks/Adium Framework/Source/ESObjectWithProperties.m Wed Aug 08 20:57:35 2012 +0200
+++ b/Frameworks/Adium Framework/Source/ESObjectWithProperties.m Wed Aug 08 22:40:31 2012 +0200
@@ -80,7 +80,7 @@
[self willChangeValueForKey:key];
- char property_name[256];
+ char property_name[256] = {0};
NSAssert([key length] < 256, @"Too long property!");
@@ -207,8 +207,7 @@
{
id ret = nil;
id value = nil;
-
- char property_name[256];
+ char property_name[256] = {0};
NSAssert([key length] < 256, @"Too long property!");
@@ -217,19 +216,13 @@
Ivar ivar = object_getInstanceVariable(self, property_name, (void **)&value);
if (ivar == NULL) {
-
- // no dictionary -> this property is certainly nil
- if (propertiesDictionary) {
- ret = [propertiesDictionary objectForKey:key];
- }
-
+ ret = [propertiesDictionary objectForKey:key];
} else {
-
const char *ivarType = ivar_getTypeEncoding(ivar);
// attempt to wrap it, if we know how
if (strcmp(ivarType, @encode(NSInteger)) == 0) {
- ret = [[[NSNumber alloc] initWithInteger:(NSInteger)value] autorelease];
+ ret = [NSNumber numberWithInteger:(NSInteger)value];
} else if (strcmp(ivarType, @encode(BOOL)) == 0) {
BOOL *idx = (BOOL*)((char *)self + ivar_getOffset(ivar));
ret = [NSNumber numberWithBool:*idx];
@@ -251,8 +244,7 @@
- (NSInteger)integerValueForProperty:(NSString *)key
{
NSInteger ret = 0;
-
- char property_name[256];
+ char property_name[256] = {0};
NSAssert([key length] < 256, @"Too long property!");
@@ -262,7 +254,7 @@
if (ivar == NULL) {
NSNumber *number = [self numberValueForProperty:key];
- ret = number ? [number integerValue] : 0;
+ ret = [number integerValue];
} else {
const char *ivarType = ivar_getTypeEncoding(ivar);
@@ -282,7 +274,7 @@
int ret = 0;
NSNumber *number = [self numberValueForProperty:key];
- ret = number ? [number intValue] : 0;
+ ret = [number intValue];
return ret;
}
@@ -290,8 +282,7 @@
- (BOOL)boolValueForProperty:(NSString *)key
{
BOOL ret = FALSE;
-
- char property_name[256];
+ char property_name[256] = {0};
NSAssert([key length] < 256, @"Too long property!");
@@ -301,7 +292,7 @@
if (ivar == NULL) {
NSNumber *number = [self numberValueForProperty:key];
- ret = number ? [number boolValue] : NO;
+ ret = [number boolValue];
} else {
const char *ivarType = ivar_getTypeEncoding(ivar);
@@ -310,7 +301,7 @@
}
BOOL *idx = (BOOL*)((char *)self + ivar_getOffset(ivar));
- ret = (NSInteger)(*idx);
+ ret = *idx;
}
return ret;
More information about the commits
mailing list