Add `rb_sys_fail_sprintf` macro

This commit is contained in:
Nobuyoshi Nakada 2023-05-12 10:49:25 +09:00
Родитель e3385f8783
Коммит 30d7205671
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 7CD2805BFA3770C6
2 изменённых файлов: 10 добавлений и 4 удалений

8
hash.c
Просмотреть файл

@ -5210,7 +5210,7 @@ ruby_setenv(const char *name, const char *value)
} }
ENV_UNLOCK(); ENV_UNLOCK();
if (ret) rb_sys_fail_str(rb_sprintf("setenv(%s)", name)); if (ret) rb_sys_fail_sprintf("setenv(%s)", name);
} }
else { else {
#ifdef VOID_UNSETENV #ifdef VOID_UNSETENV
@ -5227,7 +5227,7 @@ ruby_setenv(const char *name, const char *value)
} }
ENV_UNLOCK(); ENV_UNLOCK();
if (ret) rb_sys_fail_str(rb_sprintf("unsetenv(%s)", name)); if (ret) rb_sys_fail_sprintf("unsetenv(%s)", name);
#endif #endif
} }
#elif defined __sun #elif defined __sun
@ -5244,7 +5244,7 @@ ruby_setenv(const char *name, const char *value)
mem_size = len + strlen(value) + 2; mem_size = len + strlen(value) + 2;
mem_ptr = malloc(mem_size); mem_ptr = malloc(mem_size);
if (mem_ptr == NULL) if (mem_ptr == NULL)
rb_sys_fail_str(rb_sprintf("malloc(%"PRIuSIZE")", mem_size)); rb_sys_fail_sprintf("malloc(%"PRIuSIZE")", mem_size);
snprintf(mem_ptr, mem_size, "%s=%s", name, value); snprintf(mem_ptr, mem_size, "%s=%s", name, value);
} }
@ -5270,7 +5270,7 @@ ruby_setenv(const char *name, const char *value)
if (ret) { if (ret) {
free(mem_ptr); free(mem_ptr);
rb_sys_fail_str(rb_sprintf("putenv(%s)", name)); rb_sys_fail_sprintf("putenv(%s)", name);
} }
} }
#else /* WIN32 */ #else /* WIN32 */

Просмотреть файл

@ -54,6 +54,12 @@ do { \
rb_syserr_fail_path(errno_to_fail, (path)); \ rb_syserr_fail_path(errno_to_fail, (path)); \
} while (0) } while (0)
#define rb_sys_fail_sprintf(...) \
do { \
int errno_to_fail = errno; \
rb_syserr_fail_str(errno_to_fail, rb_sprintf("" __VA_ARGS__)); \
} while (0)
/* error.c */ /* error.c */
extern long rb_backtrace_length_limit; extern long rb_backtrace_length_limit;
extern VALUE rb_eEAGAIN; extern VALUE rb_eEAGAIN;