2010-12-14 10 views
2

私はオープンソースのjsonパーサーを使用していますが、コンパイル中に逆参照警告を出しています。潜在的なNULL逆参照

MyProject/Classes/SBJSON.m:403:13潜在的なnullの逆参照です。パラメーター「エラー」「をNSErrorオブジェクトの作成と返す」にコーディング標準によると、ここで、それは誤りで逆参照を示し

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

nullの場合もあります。

+1

コードで、それが容易になるだろう... – Eiko

+0

私はちょうど私の質問を編集しました。 – Ksinak

答えて

5

エラーパラメータがNULL(呼び出し元がNULLを渡すことを選択した場合)である可能性があると苦情を言います。次に、文

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

がクラッシュします。 R eported work-aroundが割り当て周りにif文を置くことです:

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

ありがとうMartin、これは私のアプリで潜在的なヌルデリファレンスの問題の多くを解決します。 – Ksinak

関連する問題