Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Clang Error on "Potential null dereference."

I keep getting Clang errors on the following type of code and I can't figure out why they're erroneous or how to resolve them to Clang's satisfaction:

+ (NSString *)checkForLength: (NSString *)theString error: (NSError **)error {     BOOL hasLength = ([theString length] > 0);     if (hasLength) return theString;     else {         *error = [NSError errorWithDomain:@"ErrorDomain" code:hasLength userInfo:nil];         return nil;     } } 

Leaving aside the utterly-contrived nature of the example (which Clang did object to so it's illustrative enough), Clang balks at the error assignment line with the following objection:

Potential null dereference. According to coding standards in 'Creating and Returning NSError Objects' the parameter 'error' may be null.

I like having a pristine Clang report. I've read the cited document and I can't see a way to do what's expected; I checked some open-source Cocoa libraries and this seems to be a common idiom. Any ideas?

like image 291
bbrown Avatar asked Jul 27 '09 17:07

bbrown


1 Answers

The way to do what's expected is shown in listing 3-5 in that document. With your example code:

+ (NSString *)checkForLength: (NSString *)theString error: (NSError **)error {     BOOL hasLength = ([theString length] > 0);     if (hasLength) return theString;     else {         if (error != NULL) *error = [NSError errorWithDomain:@"ErrorDomain" code:hasLength userInfo:nil];         return nil;     } } 
like image 126
Daniel Martin Avatar answered Sep 28 '22 23:09

Daniel Martin