Fixed an OOM handling problem that cause test 11 to fail the torture test.
authorDan Fandrich <dan@coneharvesters.com>
Wed, 9 Jul 2008 18:33:35 +0000 (18:33 +0000)
committerDan Fandrich <dan@coneharvesters.com>
Wed, 9 Jul 2008 18:33:35 +0000 (18:33 +0000)
CHANGES
lib/transfer.c

diff --git a/CHANGES b/CHANGES
index 475b0ba..8b9c8b3 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,9 @@
 
                                   Changelog
 
+Daniel Fandrich (9 Jul 2008)
+- Fixed an OOM handling problem that cause test 11 to fail the torture test.
+
 Daniel Fandrich (8 Jul 2008)
 - Fixed test 554 to pass the torture test.
 
index b45be0a..11202af 100644 (file)
@@ -2398,17 +2398,21 @@ CURLcode Curl_perform(struct SessionHandle *data)
             if(data->req.newurl) {
               follow = FOLLOW_REDIR;
               newurl = strdup(data->req.newurl);
+              if (!newurl)
+                res = CURLE_OUT_OF_MEMORY;
             }
             else if(data->req.location) {
               follow = FOLLOW_FAKE;
               newurl = strdup(data->req.location);
+              if (!newurl)
+                res = CURLE_OUT_OF_MEMORY;
             }
           }
 
           /* in the above cases where 'newurl' gets assigned, we have a fresh
            * allocated memory pointed to */
         }
-        else {
+        if(res != CURLE_OK) {
           /* The transfer phase returned error, we mark the connection to get
            * closed to prevent being re-used. This is becasue we can't
            * possibly know if the connection is in a good shape or not now. */