Fix memory leak, fix error.c refcount reporting

pull/7176/head
Craig Tiller 9 years ago
parent cdac58bb03
commit 97d1cd8767
  1. 8
      src/core/lib/iomgr/error.c
  2. 2
      src/core/lib/transport/transport.c

@ -174,8 +174,8 @@ static bool is_special(grpc_error *err) {
grpc_error *grpc_error_ref(grpc_error *err, const char *file, int line, grpc_error *grpc_error_ref(grpc_error *err, const char *file, int line,
const char *func) { const char *func) {
if (is_special(err)) return err; if (is_special(err)) return err;
gpr_log(GPR_DEBUG, "%p: %d -> %d [%s:%d %s]", err, err->refs.count, gpr_log(GPR_DEBUG, "%p: %" PRIdPTR " -> %" PRIdPTR " [%s:%d %s]", err,
err->refs.count + 1, file, line, func); err->refs.count, err->refs.count + 1, file, line, func);
gpr_ref(&err->refs); gpr_ref(&err->refs);
return err; return err;
} }
@ -200,8 +200,8 @@ static void error_destroy(grpc_error *err) {
void grpc_error_unref(grpc_error *err, const char *file, int line, void grpc_error_unref(grpc_error *err, const char *file, int line,
const char *func) { const char *func) {
if (is_special(err)) return; if (is_special(err)) return;
gpr_log(GPR_DEBUG, "%p: %d -> %d [%s:%d %s]", err, err->refs.count, gpr_log(GPR_DEBUG, "%p: %" PRIdPTR " -> %" PRIdPTR " [%s:%d %s]", err,
err->refs.count - 1, file, line, func); err->refs.count, err->refs.count - 1, file, line, func);
if (gpr_unref(&err->refs)) { if (gpr_unref(&err->refs)) {
error_destroy(err); error_destroy(err);
} }

@ -173,7 +173,7 @@ static void free_message(grpc_exec_ctx *exec_ctx, void *p, grpc_error *error) {
close_message_data *cmd = p; close_message_data *cmd = p;
GRPC_ERROR_UNREF(cmd->error); GRPC_ERROR_UNREF(cmd->error);
if (cmd->then_call != NULL) { if (cmd->then_call != NULL) {
cmd->then_call->cb(exec_ctx, cmd->then_call->cb_arg, GRPC_ERROR_REF(error)); cmd->then_call->cb(exec_ctx, cmd->then_call->cb_arg, error);
} }
gpr_free(cmd); gpr_free(cmd);
} }

Loading…
Cancel
Save