Potential Null dereferenzierenden
-
10-10-2019 - |
Frage
Ich verwende einen Open-Source-json-Parser, aber beim Kompilieren its me dereferencing Warnungen zu geben.
MyProject / Klassen / SBJSON.m: 403: 13 Potential null dereferenzieren. Nach Coding-Standards in ‚Erstellen und Zurückgeben NSError Objekte‘ den Parameter ‚Fehler‘ kann null
sein- (BOOL)scanValue:(NSObject **)o error:(NSError **)error
{
skipWhitespace(c);
switch (*c++) {
case '{':
return [self scanRestOfDictionary:(NSMutableDictionary **)o error:error];
break;
case '[':
return [self scanRestOfArray:(NSMutableArray **)o error:error];
break;
case '"':
return [self scanRestOfString:(NSMutableString **)o error:error];
break;
case 'f':
return [self scanRestOfFalse:(NSNumber **)o error:error];
break;
case 't':
return [self scanRestOfTrue:(NSNumber **)o error:error];
break;
case 'n':
return [self scanRestOfNull:(NSNull **)o error:error];
break;
case '-':
case '0'...'9':
c--; // cannot verify number correctly without the first character
return [self scanNumber:(NSNumber **)o error:error];
break;
case '+':
*error = err(EPARSENUM, @"Leading + disallowed in number");
return NO;
break;
case 0x0:
*error = err(EEOF, @"Unexpected end of string");
return NO;
break;
default:
*error = err(EPARSE, @"Unrecognised leading character");
return NO;
break;
}
NSAssert(0, @"Should never get here");
return NO;
}
Hier zeigt auf Fehler dereferencing.
Lösung
Es beschwert sich, dass der Fehler Parameter NULL sein könnte (falls choses der Anrufer NULL zu übergeben). Dann wird die Anweisung
*error = err(EPARSENUM, @"Leading + disallowed in number");
wird abstürzen. A r eported work-around ist ein if-Anweisung um die Zuordnung zu setzen:
if(error){
*error = err(EPARSENUM, @"Leading + disallowed in number");
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow