Domanda

Se si utilizza una JSON parser open-source, ma durante la compilazione its me dare avvertimenti dereferenziamento.

MyProject / Corsi / SBJSON.m: 403: 13 Potenziale nullo dereference. Secondo gli standard di codifica in 'Creazione e ritorno NSError Objects' l' 'errore' parametro può essere null

- (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;
}

qui si vede dereferencing in errore.

È stato utile?

Soluzione

Si lamenta che il parametro di errore potrebbe essere NULL (nel caso in cui le choses chiamante per passare NULL). Quindi, la dichiarazione

*error = err(EPARSENUM, @"Leading + disallowed in number");

andrà in crash. A r eported work-around è quello di mettere un'istruzione if intorno l'assegnazione:

if(error){
    *error = err(EPARSENUM, @"Leading + disallowed in number");
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top