Stanley Cheung пре 8 година
родитељ
комит
764837cf6d
1 измењених фајлова са 4 додато и 1 уклоњено
  1. 4 1
      src/php/ext/grpc/channel.c

+ 4 - 1
src/php/ext/grpc/channel.c

@@ -82,6 +82,7 @@ PHP_GRPC_FREE_WRAPPED_FUNC_START(wrapped_grpc_channel)
                                           key_len, rsrc))) {
         grpc_channel_destroy(p->wrapper->wrapped);
         free(p->wrapper->target);
+        free(p->wrapper->args_hashstr);
       }
       gpr_mu_unlock(&global_persistent_list_mu);
     }
@@ -290,7 +291,7 @@ PHP_METHOD(Channel, __construct) {
   channel->wrapper = malloc(sizeof(grpc_channel_wrapper));
   channel->wrapper->key = key;
   channel->wrapper->target = strdup(target);
-  channel->wrapper->args_hashstr = sha1str;
+  channel->wrapper->args_hashstr = strdup(sha1str);
   if (creds != NULL && creds->hashstr != NULL) {
     channel->wrapper->creds_hashstr = creds->hashstr;
   }
@@ -433,6 +434,7 @@ PHP_METHOD(Channel, close) {
   if (channel->wrapper->wrapped != NULL) {
     grpc_channel_destroy(channel->wrapper->wrapped);
     free(channel->wrapper->target);
+    free(channel->wrapper->args_hashstr);
     channel->wrapper->wrapped = NULL;
 
     php_grpc_delete_persistent_list_entry(channel->wrapper->key,
@@ -467,6 +469,7 @@ static void php_grpc_channel_plink_dtor(php_grpc_zend_resource *rsrc
     if (le->channel->wrapped != NULL) {
       grpc_channel_destroy(le->channel->wrapped);
       free(le->channel->target);
+      free(le->channel->args_hashstr);
     }
     gpr_mu_unlock(&le->channel->mu);
   }