From 98cef3c269a980c75b7252abfd8f7858a4ec8245 Mon Sep 17 00:00:00 2001 From: usa Date: Thu, 1 Jun 2006 02:34:30 +0000 Subject: * win32/win32.c (rb_w32_getcwd): set errno if not set. fixed [ruby-list:42346] git-svn-id: http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_8@10199 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ win32/win32.c | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/ChangeLog b/ChangeLog index 181ee8565..1b2a8b8fc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Thu Jun 1 11:29:14 2006 NAKAMURA Usaku + + * win32/win32.c (rb_w32_getcwd): set errno if not set. + fixed [ruby-list:42346] + Sat May 27 11:29:46 2006 nobuyoshi nakada * ext/extmk.rb (extmake): remove extinit files if no statically linked diff --git a/win32/win32.c b/win32/win32.c index b817cdf4e..c044efdd2 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -2611,15 +2611,22 @@ rb_w32_getcwd(char *buffer, int size) { int length; char *bp; + int save_errno = errno; #undef getcwd + errno = 0; + SetLastError(0); if (getcwd(buffer, size) == NULL) { + if (!errno) + errno = GetLastError() ? map_errno(GetLastError()) : ERANGE; return NULL; } length = strlen(buffer); if (length >= size) { + errno = ERANGE; return NULL; } + errno = save_errno; for (bp = buffer; *bp != '\0'; bp = CharNext(bp)) { if (*bp == '\\') { -- cgit