]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/execcmn.cpp
made wxCharTypeBuffer<T>::release() const again, for compatibility
[wxWidgets.git] / src / common / execcmn.cpp
index 6b7eca6b373e5e14387e85f29dcab6c97d896038..61bb0e2d0493176158b0a840392323fb2d781277 100644 (file)
@@ -16,7 +16,7 @@
 
 // this file should never be compiled directly, just included by other code
 #ifndef _WX_USED_BY_WXEXECUTE_
-    #error "Please don't exclude this file from build!"
+    #error "You should never directly build this file!"
 #endif
 
 // ----------------------------------------------------------------------------
@@ -52,7 +52,9 @@ public:
     void Init(wxPipeInputStream *stream);
 
     // check for input on our stream and cache it in our buffer if any
-    void Update();
+    //
+    // return true if anything was done
+    bool Update();
 
     ~wxStreamTempInputBuffer();
 
@@ -81,29 +83,36 @@ inline void wxStreamTempInputBuffer::Init(wxPipeInputStream *stream)
     m_stream = stream;
 }
 
-void wxStreamTempInputBuffer::Update()
+inline
+bool wxStreamTempInputBuffer::Update()
 {
-    if ( m_stream && m_stream->CanRead() )
+    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 )
     {
-        // realloc in blocks of 4Kb: this is the default (and minimal) buffer
-        // size of the Unix pipes so it should be the optimal step
-        static const size_t 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
-        {
-            m_buffer = buf;
-            m_stream->Read((char *)m_buffer + m_size, incSize);
-            m_size += m_stream->LastRead();
-        }
+        // don't read any more, we don't have enough memory to do it
+        m_stream = NULL;
     }
+    else // got memory for the buffer
+    {
+        m_buffer = buf;
+        m_stream->Read((char *)m_buffer + m_size, incSize);
+        m_size += m_stream->LastRead();
+    }
+
+    return true;
 }
 
+inline
 wxStreamTempInputBuffer::~wxStreamTempInputBuffer()
 {
     if ( m_buffer )