aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar gtm.daemon <gtm.daemon@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3>2009-03-13 19:45:21 +0000
committerGravatar gtm.daemon <gtm.daemon@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3>2009-03-13 19:45:21 +0000
commitf14883b92b7df63f9b7c368d138a551c75c8c977 (patch)
tree6c9103f0c658bf75a250ed47d695b1e876e3554a
parenteb030f647c066da594c612db4ba482612842361e (diff)
[Author: dmaclach]
Fix up StackTrace so that it uses BOOLs correctly, and puts a - in front of regular methods. It was putting a + in front of basically all methods. DELTA=4 (0 added, 0 deleted, 4 changed) R=thomasvl
-rw-r--r--Foundation/GTMStackTrace.m8
-rw-r--r--Foundation/GTMStackTraceTest.m14
2 files changed, 18 insertions, 4 deletions
diff --git a/Foundation/GTMStackTrace.m b/Foundation/GTMStackTrace.m
index 0b28743..05843b5 100644
--- a/Foundation/GTMStackTrace.m
+++ b/Foundation/GTMStackTrace.m
@@ -93,7 +93,7 @@ static NSUInteger GTMGetStackAddressDescriptorsForAddresses(void *pcs[],
// Iterate through the stack.
for (NSUInteger i = 0; i < count; ++i) {
const char *class_name = NULL;
- Boolean is_class_method = FALSE;
+ BOOL is_class_method = NO;
size_t smallest_diff = SIZE_MAX;
struct GTMAddressDescriptor *currDesc = &outDescs[i];
currDesc->address = pcs[i];
@@ -108,7 +108,7 @@ static NSUInteger GTMGetStackAddressDescriptorsForAddresses(void *pcs[],
if (diff < smallest_diff) {
best_method = class_descs[j].class_methods[k];
class_name = class_descs[j].class_name;
- is_class_method = TRUE;
+ is_class_method = YES;
smallest_diff = diff;
}
}
@@ -121,7 +121,7 @@ static NSUInteger GTMGetStackAddressDescriptorsForAddresses(void *pcs[],
if (diff < smallest_diff) {
best_method = class_descs[j].instance_methods[k];
class_name = class_descs[j].class_name;
- is_class_method = TRUE;
+ is_class_method = NO;
smallest_diff = diff;
}
}
@@ -140,7 +140,7 @@ static NSUInteger GTMGetStackAddressDescriptorsForAddresses(void *pcs[],
dladdr(currDesc->address, &info);
if ((size_t)currDesc->address - (size_t)info.dli_saddr < smallest_diff) {
currDesc->symbol = info.dli_sname;
- currDesc->is_class_method = FALSE;
+ currDesc->is_class_method = NO;
currDesc->class_name = NULL;
}
currDesc->filename = info.dli_fname;
diff --git a/Foundation/GTMStackTraceTest.m b/Foundation/GTMStackTraceTest.m
index f1c1247..0739122 100644
--- a/Foundation/GTMStackTraceTest.m
+++ b/Foundation/GTMStackTraceTest.m
@@ -24,6 +24,13 @@
@end
@implementation GTMStackTraceTest
++ (BOOL)classMethodTest {
+ NSString *stacktrace = GTMStackTrace();
+ NSArray *stacklines = [stacktrace componentsSeparatedByString:@"\n"];
+ NSString *firstFrame = [stacklines objectAtIndex:0];
+ NSRange range = [firstFrame rangeOfString:@"+"];
+ return range.location != NSNotFound;
+}
- (void)testStackTraceBasic {
NSString *stacktrace = GTMStackTrace();
@@ -43,6 +50,13 @@
STAssertNotEquals(range.location, (NSUInteger)NSNotFound,
@"First frame should contain #0, stack trace: %@",
stacktrace);
+
+ range = [firstFrame rangeOfString:@"-"];
+ STAssertNotEquals(range.location, (NSUInteger)NSNotFound,
+ @"First frame should contain - since it's "
+ @"an instance method: %@", stacktrace);
+ STAssertTrue([[self class] classMethodTest], @"First frame should contain"
+ @"+ since it's a class method");
}
-(void)testGetStackAddressDescriptors {