mruby.h: add MRB_OPEN_FAILURE() macro and refactor MRB_OPEN_SUCCESS()

since all current uses check for failure (!MRB_OPEN_SUCCESS), add
MRB_OPEN_FAILURE() as the primary macro for better readability. define
MRB_OPEN_SUCCESS() in terms of MRB_OPEN_FAILURE() to avoid duplication
and optimize the common case. update all usage sites to use the clearer
MRB_OPEN_FAILURE() form.

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
Yukihiro "Matz" Matsumoto
2025-11-16 06:53:02 +09:00
parent 74c0769319
commit 40b0cb98f7
5 changed files with 19 additions and 9 deletions
+15 -5
View File
@@ -1271,18 +1271,18 @@ MRB_API void mrb_close(mrb_state *mrb);
MRB_API void mrb_method_cache_clear(mrb_state *mrb);
/**
* Check if mrb_open() succeeded
* Check if mrb_open() failed
*
* @param mrb
* Pointer returned from mrb_open() or mrb_open_core().
* @return
* Non-zero if initialization succeeded, 0 if failed.
* Non-zero if initialization failed, 0 if succeeded.
* @note
* mrb_open() may return non-NULL even on failure (with mrb->exc set).
* Use this macro to check for success:
* Use this macro to check for failure:
* @code
* mrb_state *mrb = mrb_open();
* if (!MRB_OPEN_SUCCESS(mrb)) {
* if (MRB_OPEN_FAILURE(mrb)) {
* if (mrb) {
* // Inspect mrb->exc for error details
* mrb_close(mrb);
@@ -1291,7 +1291,17 @@ MRB_API void mrb_method_cache_clear(mrb_state *mrb);
* }
* @endcode
*/
#define MRB_OPEN_SUCCESS(mrb) ((mrb) && !(mrb)->exc)
#define MRB_OPEN_FAILURE(mrb) (!(mrb) || (mrb)->exc)
/**
* Check if mrb_open() succeeded
*
* @param mrb
* Pointer returned from mrb_open() or mrb_open_core().
* @return
* Non-zero if initialization succeeded, 0 if failed.
*/
#define MRB_OPEN_SUCCESS(mrb) (!MRB_OPEN_FAILURE(mrb))
/**
* The memory allocation function. You can redefine this function for your own allocator.
+1 -1
View File
@@ -673,7 +673,7 @@ main(int argc, char **argv)
l_restart:
if (!MRB_OPEN_SUCCESS(mrb)) {
if (MRB_OPEN_FAILURE(mrb)) {
mrb_print_error(mrb); /* handles NULL */
mrb_close(mrb); /* handles NULL */
return EXIT_FAILURE;
+1 -1
View File
@@ -475,7 +475,7 @@ main(int argc, char **argv)
/* new interpreter instance */
mrb = mrb_open();
if (!MRB_OPEN_SUCCESS(mrb)) {
if (MRB_OPEN_FAILURE(mrb)) {
mrb_print_error(mrb); /* handles NULL */
mrb_close(mrb); /* handles NULL */
return EXIT_FAILURE;
+1 -1
View File
@@ -282,7 +282,7 @@ main(int argc, char **argv)
mrb_value ARGV;
mrb_value v;
if (!MRB_OPEN_SUCCESS(mrb)) {
if (MRB_OPEN_FAILURE(mrb)) {
mrb_print_error(mrb); /* handles NULL */
mrb_close(mrb); /* handles NULL */
return EXIT_FAILURE;
+1 -1
View File
@@ -290,7 +290,7 @@ main(int argc, char **argv)
/* new interpreter instance */
mrb = mrb_open();
if (!MRB_OPEN_SUCCESS(mrb)) {
if (MRB_OPEN_FAILURE(mrb)) {
mrb_print_error(mrb); /* handles NULL */
mrb_close(mrb); /* handles NULL */
return EXIT_FAILURE;