diff --git a/src/core/lib/iomgr/error.c b/src/core/lib/iomgr/error.c index 42c2f3e2dde..f0b7e01d49a 100644 --- a/src/core/lib/iomgr/error.c +++ b/src/core/lib/iomgr/error.c @@ -210,7 +210,7 @@ static uint8_t get_placement(grpc_error **err, size_t size) { uint8_t slots = (uint8_t)(size / sizeof(intptr_t)); if ((*err)->arena_size + slots > (*err)->arena_capacity) { (*err)->arena_capacity = (uint8_t)(3 * (*err)->arena_capacity / 2); - *err = realloc( + *err = gpr_realloc( *err, sizeof(grpc_error) + (*err)->arena_capacity * sizeof(intptr_t)); } uint8_t placement = (*err)->arena_size; diff --git a/test/cpp/microbenchmarks/bm_error.cc b/test/cpp/microbenchmarks/bm_error.cc index 6331b245923..76f168b75be 100644 --- a/test/cpp/microbenchmarks/bm_error.cc +++ b/test/cpp/microbenchmarks/bm_error.cc @@ -72,12 +72,14 @@ static void BM_ErrorCreateAndSetStatus(benchmark::State& state) { BENCHMARK(BM_ErrorCreateAndSetStatus); static void BM_ErrorCreateAndSetIntAndStr(benchmark::State& state) { + TrackCounters track_counters; while (state.KeepRunning()) { GRPC_ERROR_UNREF(grpc_error_set_str( grpc_error_set_int(GRPC_ERROR_CREATE("GOAWAY received"), GRPC_ERROR_INT_HTTP2_ERROR, (intptr_t)0), GRPC_ERROR_STR_RAW_BYTES, "raw bytes")); } + track_counters.Finish(state); } BENCHMARK(BM_ErrorCreateAndSetIntAndStr);