Comments (1)
You can handle it however you like. The "nice" way would be
rb_raise(rb_eNoMemError, "failed to allocate mpz_t");
But if you're actually out of memory I don't even know if that would succeed since Ruby might try to allocate an object for the exception. You could even try fancier stuff like invoking the GC to free up some memory and then retrying, but again the chance of success really depends on how the internals of the VM are set up.
Personally I would find it completely reasonable to do nothing and let the program crash in whatever way it happens to. Recovering from malloc
failure is really only possible in a C program because you can structure your code such that the failure path is allocation-free, but when your C code is getting called from within the hugely complicated Ruby VM, all bets are off.
from emberb.
Related Issues (20)
- "gaping whole" should be "gaping hole"
- Data_Wrap_Struct is deprecated HOT 1
- Add allocation section HOT 1
- Document hash functions HOT 2
- Document string encoding functions
- Document all basic types operations in table form HOT 1
- Document interfacing with complex numbers HOT 1
- Typos and small errors
- rb_cData is deprecated HOT 1
- Missing link for "when" in The Ruby C API HOT 1
- `ruby_options` no longer optional in 3.2? HOT 1
- Great job, thank you! HOT 1
- LICENSE file HOT 1
- Problem with Time class
- Update to 3.3
- Explain how to build an extension with CMake HOT 4
- Problem while running Ruby code from C HOT 3
- How should I do the translation HOT 1
- How writing dup() HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from emberb.