diff options
| -rw-r--r-- | CHANGES | 3 | ||||
| -rw-r--r-- | lib/transfer.c | 6 | 
2 files changed, 8 insertions, 1 deletions
| @@ -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. diff --git a/lib/transfer.c b/lib/transfer.c index b45be0a56..11202af80 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -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. */ | 
