diff options
author | Noah Eisen <ncteisen@google.com> | 2017-04-05 16:10:13 -0700 |
---|---|---|
committer | Noah Eisen <ncteisen@google.com> | 2017-04-06 10:49:29 -0700 |
commit | c6ec1155d026c91b1badb07ef1605bb747cff064 (patch) | |
tree | 2b68ae2eb092f7ee507af0cabbba3b9e4ffd7928 /test/core/iomgr | |
parent | f8af6d9cf8d461ff3d93490583760c1f089452b6 (diff) |
Fix error overflow bug
Diffstat (limited to 'test/core/iomgr')
-rw-r--r-- | test/core/iomgr/error_test.c | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/test/core/iomgr/error_test.c b/test/core/iomgr/error_test.c index 5c60a4ddb8..607dbeea3e 100644 --- a/test/core/iomgr/error_test.c +++ b/test/core/iomgr/error_test.c @@ -182,8 +182,6 @@ static void print_error_string_reference() { grpc_error* parent = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING("Parent", children, 2); - gpr_log(GPR_DEBUG, "%s", grpc_error_string(parent)); - for (size_t i = 0; i < 2; ++i) { GRPC_ERROR_UNREF(children[i]); } @@ -216,6 +214,33 @@ static void test_special() { GRPC_ERROR_UNREF(error); } +static void test_overflow() { + grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Overflow"); + + for (size_t i = 0; i < 150; ++i) { + error = grpc_error_add_child(error, + GRPC_ERROR_CREATE_FROM_STATIC_STRING("Child")); + } + + error = grpc_error_set_int(error, GRPC_ERROR_INT_HTTP2_ERROR, 5); + error = + grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE, + grpc_slice_from_static_string("message for child 2")); + error = grpc_error_set_int(error, GRPC_ERROR_INT_GRPC_STATUS, 5); + + intptr_t i; + GPR_ASSERT(grpc_error_get_int(error, GRPC_ERROR_INT_HTTP2_ERROR, &i)); + GPR_ASSERT(i == 5); + GPR_ASSERT(!grpc_error_get_int(error, GRPC_ERROR_INT_GRPC_STATUS, &i)); + + error = grpc_error_set_int(error, GRPC_ERROR_INT_HTTP2_ERROR, 10); + GPR_ASSERT(grpc_error_get_int(error, GRPC_ERROR_INT_HTTP2_ERROR, &i)); + GPR_ASSERT(i == 10); + + GRPC_ERROR_UNREF(error); + ; +} + int main(int argc, char** argv) { grpc_test_init(argc, argv); grpc_init(); @@ -228,6 +253,7 @@ int main(int argc, char** argv) { test_create_referencing(); test_create_referencing_many(); test_special(); + test_overflow(); grpc_shutdown(); return 0; |