зеркало из https://github.com/github/ruby.git
Fixed a potential memory leak
`rb_str_new_cstr` can raise a `NoMemoryError`.
This commit is contained in:
Родитель
155ab9caa6
Коммит
985d1b9ec4
|
@ -3270,6 +3270,7 @@ process.$(OBJEXT): $(hdrdir)/ruby/ruby.h
|
|||
process.$(OBJEXT): $(top_srcdir)/internal/array.h
|
||||
process.$(OBJEXT): $(top_srcdir)/internal/bits.h
|
||||
process.$(OBJEXT): $(top_srcdir)/internal/compilers.h
|
||||
process.$(OBJEXT): $(top_srcdir)/internal/dir.h
|
||||
process.$(OBJEXT): $(top_srcdir)/internal/error.h
|
||||
process.$(OBJEXT): $(top_srcdir)/internal/eval.h
|
||||
process.$(OBJEXT): $(top_srcdir)/internal/gc.h
|
||||
|
|
|
@ -97,6 +97,7 @@ int initgroups(const char *, rb_gid_t);
|
|||
#include "hrtime.h"
|
||||
#include "internal.h"
|
||||
#include "internal/bits.h"
|
||||
#include "internal/dir.h"
|
||||
#include "internal/error.h"
|
||||
#include "internal/eval.h"
|
||||
#include "internal/hash.h"
|
||||
|
@ -3493,10 +3494,8 @@ rb_execarg_run_options(const struct rb_execarg *eargp, struct rb_execarg *sargp,
|
|||
|
||||
if (eargp->chdir_given) {
|
||||
if (sargp) {
|
||||
char *cwd = ruby_getcwd();
|
||||
sargp->chdir_given = 1;
|
||||
sargp->chdir_dir = hide_obj(rb_str_new2(cwd));
|
||||
xfree(cwd);
|
||||
sargp->chdir_dir = hide_obj(rb_dir_getwd_ospath());
|
||||
}
|
||||
if (chdir(RSTRING_PTR(eargp->chdir_dir)) == -1) { /* async-signal-safe */
|
||||
ERRMSG("chdir");
|
||||
|
|
Загрузка…
Ссылка в новой задаче