Fix memory leak

reviewable/pr8842/r2
Craig Tiller 8 years ago
parent 7e1cfe1460
commit 1e5e5ea5eb
  1. 4
      src/core/lib/surface/channel.c
  2. 4
      src/core/lib/surface/server.c
  3. 2
      src/core/lib/transport/metadata.h
  4. 4
      test/core/transport/metadata_test.c

@ -270,11 +270,11 @@ void *grpc_channel_register_call(grpc_channel *channel, const char *method,
rc->path = grpc_mdelem_from_slices(
&exec_ctx, GRPC_MDSTR_PATH,
grpc_slice_intern(grpc_slice_from_copied_string(method)));
grpc_slice_intern(grpc_slice_from_static_string(method)));
rc->authority =
host ? grpc_mdelem_from_slices(
&exec_ctx, GRPC_MDSTR_AUTHORITY,
grpc_slice_intern(grpc_slice_from_copied_string(host)))
grpc_slice_intern(grpc_slice_from_static_string(host)))
: GRPC_MDNULL;
gpr_mu_lock(&channel->registered_call_mu);
rc->next = channel->registered_calls;

@ -1166,12 +1166,12 @@ void grpc_server_setup_transport(grpc_exec_ctx *exec_ctx, grpc_server *s,
bool has_host;
grpc_slice method;
if (rm->host != NULL) {
host = grpc_slice_intern(grpc_slice_from_copied_string(rm->host));
host = grpc_slice_intern(grpc_slice_from_static_string(rm->host));
has_host = true;
} else {
has_host = false;
}
method = grpc_slice_intern(grpc_slice_from_copied_string(rm->method));
method = grpc_slice_intern(grpc_slice_from_static_string(rm->method));
hash = GRPC_MDSTR_KV_HASH(has_host ? grpc_slice_hash(host) : 0,
grpc_slice_hash(method));
for (probes = 0; chand->registered_methods[(hash + probes) % slots]

@ -148,7 +148,7 @@ void *grpc_mdelem_set_user_data(grpc_mdelem md, void (*destroy_func)(void *),
void *user_data);
/* Reference counting */
#define GRPC_METADATA_REFCOUNT_DEBUG
//#define GRPC_METADATA_REFCOUNT_DEBUG
#ifdef GRPC_METADATA_REFCOUNT_DEBUG
#define GRPC_MDELEM_REF(s) grpc_mdelem_ref((s), __FILE__, __LINE__)
#define GRPC_MDELEM_UNREF(exec_ctx, s) \

@ -141,14 +141,14 @@ static void test_create_many_persistant_metadata(void) {
gpr_ltoa(i, buffer);
created[i] = grpc_mdelem_from_slices(
&exec_ctx, grpc_slice_intern(grpc_slice_from_static_string("a")),
grpc_slice_intern(grpc_slice_from_copied_string(buffer)));
grpc_slice_intern(grpc_slice_from_static_string(buffer)));
}
/* verify phase */
for (i = 0; i < MANY; i++) {
gpr_ltoa(i, buffer);
md = grpc_mdelem_from_slices(
&exec_ctx, grpc_slice_intern(grpc_slice_from_static_string("a")),
grpc_slice_intern(grpc_slice_from_copied_string(buffer)));
grpc_slice_intern(grpc_slice_from_static_string(buffer)));
GPR_ASSERT(grpc_mdelem_eq(md, created[i]));
GRPC_MDELEM_UNREF(&exec_ctx, md);
}

Loading…
Cancel
Save