Commit 0e05a632 authored by Yang Tse's avatar Yang Tse
Browse files

fix out of memory handling issue

parent c518c52a
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -397,6 +397,9 @@ CURLcode curl_easy_perform(CURL *easy)
  mcode = curl_multi_add_handle(multi, easy);
  if(mcode) {
    curl_multi_cleanup(multi);
    if(mcode == CURLM_OUT_OF_MEMORY)
      return CURLE_OUT_OF_MEMORY;
    else
      return CURLE_FAILED_INIT;
  }

+8 −2
Original line number Diff line number Diff line
@@ -501,6 +501,9 @@ CURLcode Curl_open(struct SessionHandle **curl)
{
  CURLcode res = CURLE_OK;
  struct SessionHandle *data;
#ifdef USE_ARES
  int status;
#endif

  /* Very simple start-up: alloc the struct, init it with zeroes and return */
  data = (struct SessionHandle *)calloc(1, sizeof(struct SessionHandle));
@@ -513,9 +516,12 @@ CURLcode Curl_open(struct SessionHandle **curl)
  data->magic = CURLEASY_MAGIC_NUMBER;

#ifdef USE_ARES
  if(ARES_SUCCESS != ares_init(&data->state.areschannel)) {
  if ((status = ares_init(&data->state.areschannel)) != ARES_SUCCESS) {
    DEBUGF(fprintf(stderr, "Error: ares_init failed\n"));
    free(data);
    if (status == ARES_ENOMEM)
      return CURLE_OUT_OF_MEMORY;
    else
      return CURLE_FAILED_INIT;
  }
  /* make sure that all other returns from this function should destroy the