From d2f9bec5c6f3c34362cf13e35e11d3dbc7888a32 Mon Sep 17 00:00:00 2001 From: Joshua Haberman Date: Sat, 12 Jan 2019 16:15:46 -0800 Subject: Removed old-style C++ handlers that relied on UB in favor of more normal ones. --- tests/pb/test_encoder.cc | 33 +++++++++++++-------------------- tests/test_util.h | 2 +- 2 files changed, 14 insertions(+), 21 deletions(-) (limited to 'tests') diff --git a/tests/pb/test_encoder.cc b/tests/pb/test_encoder.cc index fac0dae..35c0e1e 100644 --- a/tests/pb/test_encoder.cc +++ b/tests/pb/test_encoder.cc @@ -18,12 +18,9 @@ std::string read_string(const char *filename) { void test_pb_roundtrip() { std::string input = read_string("google/protobuf/descriptor.pb"); - upb::SymbolTable* symtab = upb::SymbolTable::New(); - upb::HandlerCache* encoder_cache = upb::pb::Encoder::NewCache(); - upb::pb::CodeCache* decoder_cache = upb::pb::CodeCache::New(encoder_cache); - ASSERT(symtab); - ASSERT(encoder_cache); - ASSERT(decoder_cache); + upb::SymbolTable symtab; + upb::HandlerCache encoder_cache(upb::pb::EncoderPtr::NewCache()); + upb::pb::CodeCache decoder_cache(&encoder_cache); upb::Arena arena; google_protobuf_FileDescriptorSet *set = google_protobuf_FileDescriptorSet_parsenew( @@ -34,32 +31,28 @@ void test_pb_roundtrip() { google_protobuf_FileDescriptorSet_file(set, &n); ASSERT(n == 1); upb::Status status; - bool ok = symtab->AddFile(files[0], &status); + bool ok = symtab.AddFile(files[0], &status); if (!ok) { fprintf(stderr, "Error building def: %s\n", upb_status_errmsg(&status)); ASSERT(false); } - const upb::MessageDef *md = - symtab->LookupMessage("google.protobuf.FileDescriptorSet"); + upb::MessageDefPtr md = + symtab.LookupMessage("google.protobuf.FileDescriptorSet"); ASSERT(md); - const upb::Handlers* encoder_handlers = encoder_cache->Get(md); + const upb::Handlers *encoder_handlers = encoder_cache.Get(md); ASSERT(encoder_handlers); - const upb::pb::DecoderMethod* method = decoder_cache->Get(md); - ASSERT(method); + const upb::pb::DecoderMethodPtr method = decoder_cache.Get(md); upb::InlinedEnvironment<512> env; std::string output; upb::StringSink string_sink(&output); - upb::pb::Encoder* encoder = - upb::pb::Encoder::Create(&env, encoder_handlers, string_sink.input()); - upb::pb::Decoder* decoder = - upb::pb::Decoder::Create(&env, method, encoder->input()); - ok = upb::BufferSource::PutBuffer(input, decoder->input()); + upb::pb::EncoderPtr encoder = + upb::pb::EncoderPtr::Create(&env, encoder_handlers, string_sink.input()); + upb::pb::DecoderPtr decoder = + upb::pb::DecoderPtr::Create(&env, method, encoder.input()); + ok = upb::PutBuffer(input, decoder.input()); ASSERT(ok); ASSERT(input == output); - upb::pb::CodeCache::Free(decoder_cache); - upb::HandlerCache::Free(encoder_cache); - upb::SymbolTable::Free(symtab); } extern "C" { diff --git a/tests/test_util.h b/tests/test_util.h index f616c36..1b1ff01 100644 --- a/tests/test_util.h +++ b/tests/test_util.h @@ -12,7 +12,7 @@ #ifdef __cplusplus -upb::BufferHandle global_handle; +upb_bufhandle global_handle; /* A convenience class for parser tests. Provides some useful features: * -- cgit v1.2.3