vhook/ppm.c:134: error: Null Dereference
  pointer `in` last assigned on line 130 could be null and is dereferenced by call to `fgetc()` at line 134, column 13.

vhook/ppm.c:126:1: start of procedure rwpipe_read_number()
124. */
125. 
126. static int rwpipe_read_number( rwpipe *rw )
     ^
127. {
128.     int value = 0;

vhook/ppm.c:128:5: 
126. static int rwpipe_read_number( rwpipe *rw )
127. {
128.     int value = 0;
         ^
129.     int c = 0;
130.     FILE *in = rwpipe_reader( rw );

vhook/ppm.c:129:5: 
127. {
128.     int value = 0;
129.     int c = 0;
         ^
130.     FILE *in = rwpipe_reader( rw );
131. 

vhook/ppm.c:130:5: 
128.     int value = 0;
129.     int c = 0;
130.     FILE *in = rwpipe_reader( rw );
         ^
131. 
132.     do

vhook/ppm.c:104:1: start of procedure rwpipe_reader()
  102. */
  103. 
  104. static FILE *rwpipe_reader( rwpipe *this )
       ^
  105. {
  106.     if ( this != NULL )

vhook/ppm.c:106:10: Taking false branch
  104. static FILE *rwpipe_reader( rwpipe *this )
  105. {
  106.     if ( this != NULL )
                ^
  107.         return this->reader;
  108.     else

vhook/ppm.c:109:9: 
  107.         return this->reader;
  108.     else
  109.         return NULL;
               ^
  110. }
  111. 

vhook/ppm.c:110:1: return from a call to rwpipe_reader
  108.     else
  109.         return NULL;
  110. }
       ^
  111. 
  112. /** Write data to the pipe.

vhook/ppm.c:134:9: 
132.     do
133.     {
134.         c = fgetc( in );
             ^
135. 
136.         while( c != EOF && !isdigit( c ) && c != '#' )

static int rwpipe_read_number( rwpipe *rw )
{
    int value = 0;
    int c = 0;
    FILE *in = rwpipe_reader( rw );
    do
    {
        c = fgetc( in );
        while( c != EOF && !isdigit( c ) && c != '#' )
            c = fgetc( in );
        if ( c == '#' )
            while( c != EOF && c != '\n' )
                c = fgetc( in );
    }
    while ( c != EOF && !isdigit( c ) );
    while( c != EOF && isdigit( c ) )
    {
        value = value * 10 + ( c - '0' );
        c = fgetc( in );
    }
    return value;
}
["static int rwpipe_read_number( rwpipe *rw )\n{\n    int value = 0;\n    int c = 0;\n    FILE *in = rwpipe_reader( rw );\n    do\n    {\n        c = fgetc( in );\n        while( c != EOF && !isdigit( c ) && c != '#' )\n            c = fgetc( in );\n        if ( c == '#' )\n            while( c != EOF && c != '\\n' )\n                c = fgetc( in );\n    }\n    while ( c != EOF && !isdigit( c ) );\n    while( c != EOF && isdigit( c ) )\n    {\n        value = value * 10 + ( c - '0' );\n        c = fgetc( in );\n    }\n    return value;\n}", 'static FILE *rwpipe_reader( rwpipe *this )\n{\n    if ( this != NULL )\n        return this->reader;\n    else\n        return NULL;\n}']