aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/lib
diff options
context:
space:
mode:
authorGravatar Mark D. Roth <roth@google.com>2016-07-27 15:52:46 +0000
committerGravatar Mark D. Roth <roth@google.com>2016-07-27 15:52:46 +0000
commit05d73af3d18ec301d2778f343edd1cae7d4acd1a (patch)
treea15737128bd797bf474cba9cff8773253ba85723 /src/core/lib
parent898d84d309ede54c19c29e18a3d78546b3168323 (diff)
Fixed asan failure and some refcounting bugs.
Diffstat (limited to 'src/core/lib')
-rw-r--r--src/core/lib/channel/channel_stack.c9
-rw-r--r--src/core/lib/channel/connected_channel.c2
-rw-r--r--src/core/lib/surface/call.c2
3 files changed, 9 insertions, 4 deletions
diff --git a/src/core/lib/channel/channel_stack.c b/src/core/lib/channel/channel_stack.c
index 70062e0c3b..7fcc0ef97f 100644
--- a/src/core/lib/channel/channel_stack.c
+++ b/src/core/lib/channel/channel_stack.c
@@ -189,8 +189,13 @@ grpc_error *grpc_call_stack_init(grpc_exec_ctx *exec_ctx,
call_elems[i].call_data = user_data;
grpc_error *error =
call_elems[i].filter->init_call_elem(exec_ctx, &call_elems[i], &args);
- if (error != GRPC_ERROR_NONE && first_error == GRPC_ERROR_NONE)
- first_error = error;
+ if (error != GRPC_ERROR_NONE) {
+ if (first_error == GRPC_ERROR_NONE) {
+ first_error = error;
+ } else {
+ GRPC_ERROR_UNREF(error);
+ }
+ }
user_data +=
ROUND_UP_TO_ALIGNMENT_SIZE(call_elems[i].filter->sizeof_call_data);
}
diff --git a/src/core/lib/channel/connected_channel.c b/src/core/lib/channel/connected_channel.c
index ecafcc99c7..bad1c50a71 100644
--- a/src/core/lib/channel/connected_channel.c
+++ b/src/core/lib/channel/connected_channel.c
@@ -90,7 +90,7 @@ static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx,
exec_ctx, chand->transport, TRANSPORT_STREAM_FROM_CALL_DATA(calld),
&args->call_stack->refcount, args->server_transport_data);
return r == 0 ? GRPC_ERROR_NONE
- : GRPC_ERROR_CREATE("transport initialization failed");
+ : GRPC_ERROR_CREATE("transport stream initialization failed");
}
static void set_pollset_or_pollset_set(grpc_exec_ctx *exec_ctx,
diff --git a/src/core/lib/surface/call.c b/src/core/lib/surface/call.c
index 345698092a..b3bf1427a3 100644
--- a/src/core/lib/surface/call.c
+++ b/src/core/lib/surface/call.c
@@ -274,7 +274,7 @@ grpc_call *grpc_call_create(
grpc_error_get_str(error, GRPC_ERROR_STR_DESCRIPTION);
close_with_status(&exec_ctx, call, (grpc_status_code)status,
error_str == NULL ? "unknown error" : error_str);
- grpc_error_unref(error);
+ GRPC_ERROR_UNREF(error);
}
if (cq != NULL) {
GPR_ASSERT(