+ if ( !m_stream || !m_stream->CanRead() )
+ return false;
+
+ // realloc in blocks of 4Kb: this is the default (and minimal) buffer
+ // size of the Unix pipes so it should be the optimal step
+ //
+ // NB: don't use "static int" in this inline function, some compilers
+ // (e.g. IBM xlC) don't like it
+ enum { incSize = 4096 };
+
+ void *buf = realloc(m_buffer, m_size + incSize);
+ if ( !buf )
+ {
+ // don't read any more, we don't have enough memory to do it
+ m_stream = NULL;
+ }
+ else // got memory for the buffer