Sha256: 9a436aa282fa2aa06c31cff2b0749ba02db07c751098a846bd79c2aa58c58a2f

Contents?: true

Size: 871 Bytes

Versions: 2

Compression:

Stored size: 871 Bytes

Contents

This library does a lot of arbitrary mixing of C and C++. That's inherently dangerous. Following is one VERY IMPORTANT
consideration to bear in mind regarding C++ objects with nontrivial destructors (i.e. V8!):

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/100535

> Second, ruby's exception handling via setjmp/longjmp effectively means
> you should never construct a C++ object with a nontrivial destructor
> on the stack.  If ruby longjmps out of your code, your destructors
> will not be called.

It's worse than that; if ruby longjmps over the destruction of an
automatic object, the program has undefined behavior.  And if a C++
exception ever leaves C++ code and goes into Ruby code, the result will
also be undefined.

C99 programmers also have to be careful; longjmping over the destruction
of a variable-length array can result in a memory leak.

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
tomato-0.0.1.prealpha2 ext/tomato/IMPORTANT
tomato-0.0.1.prealpha1 ext/tomato/IMPORTANT