etc.c: retry with allocated string buffer

* ext/etc/etc.c (etc_systmpdir): retry with allocated string
  buffer if static buffer size is not enough.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55262 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2016-06-02 12:21:42 +00:00
Родитель 0661411671
Коммит c3262bceee
1 изменённых файлов: 6 добавлений и 0 удалений

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

@ -664,9 +664,15 @@ etc_systmpdir(void)
if (len > 0) { if (len > 0) {
tmpstr = path; tmpstr = path;
tmplen = len - 1; tmplen = len - 1;
if (len > sizeof(path)) tmpstr = 0;
} }
# endif # endif
tmpdir = rb_filesystem_str_new(tmpstr, tmplen); tmpdir = rb_filesystem_str_new(tmpstr, tmplen);
# if defined _CS_DARWIN_USER_TEMP_DIR
if (!tmpstr) {
confstr(_CS_DARWIN_USER_TEMP_DIR, RSTRING_PTR(tmpdir), len);
}
# endif
#endif #endif
FL_UNSET(tmpdir, FL_TAINT); FL_UNSET(tmpdir, FL_TAINT);
return tmpdir; return tmpdir;