diff options
author | Jose <jose@zeroc.com> | 2020-12-29 16:01:03 +0100 |
---|---|---|
committer | Jose <jose@zeroc.com> | 2020-12-29 16:02:36 +0100 |
commit | b64ae5943c8db10a07343b583324f7e79a892165 (patch) | |
tree | 5e39e9e9ca357377d8bfe06c504eddb1d5e03f8a /ruby/src | |
parent | Update codeql-analysis.yml (diff) | |
download | ice-b64ae5943c8db10a07343b583324f7e79a892165.tar.bz2 ice-b64ae5943c8db10a07343b583324f7e79a892165.tar.xz ice-b64ae5943c8db10a07343b583324f7e79a892165.zip |
Fix segfault unmarshalling exception class data member - Close #1224
Diffstat (limited to 'ruby/src')
-rw-r--r-- | ruby/src/IceRuby/Types.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/ruby/src/IceRuby/Types.cpp b/ruby/src/IceRuby/Types.cpp index 324f8778793..8642e984c8b 100644 --- a/ruby/src/IceRuby/Types.cpp +++ b/ruby/src/IceRuby/Types.cpp @@ -2889,6 +2889,7 @@ IceRuby::ExceptionReader::ExceptionReader(const ExceptionInfoPtr& info) : IceRuby::ExceptionReader::~ExceptionReader() throw() { + rb_gc_unregister_address(&_ex); } string @@ -2924,6 +2925,7 @@ IceRuby::ExceptionReader::_read(Ice::InputStream* is) is->startException(); const_cast<VALUE&>(_ex) = _info->unmarshal(is); + rb_gc_register_address(&_ex); const_cast<Ice::SlicedDataPtr&>(_slicedData) = is->endException(_info->preserve); } |