Update of /cvsroot/openvrml/openvrml/src/libopenvrml/openvrml
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv6415/src/libopenvrml/openvrml
Modified Files:
browser.cpp
Log Message:
Fixed relative URI resolution on Windows.
Index: browser.cpp
===================================================================
RCS file: /cvsroot/openvrml/openvrml/src/libopenvrml/openvrml/browser.cpp,v
retrieving revision 1.195
retrieving revision 1.196
diff -C2 -d -r1.195 -r1.196
*** browser.cpp 22 Nov 2006 00:05:18 -0000 1.195
--- browser.cpp 5 Dec 2006 21:16:21 -0000 1.196
***************
*** 3537,3544 ****
# ifdef _WIN32
std::vector<char> cwd_buf(_MAX_PATH);
! while (!_getcwd(&cwd_buf.front(), cwd_buf.size()) && errno == ERANGE) {
cwd_buf.resize(cwd_buf.size() * 2);
}
! std::replace_if(cwd_buf.begin(),
cwd_buf.begin() + strlen(&cwd_buf.front()) + 1,
std::bind2nd(std::equal_to<char>(), '\\'), '/');
--- 3537,3550 ----
# ifdef _WIN32
std::vector<char> cwd_buf(_MAX_PATH);
! //
! // Path must begin with a slash. _getcwd returns something that
! // begins with a drive letter.
! //
! cwd_buf[0] = '/';
! while (!_getcwd(&cwd_buf.front() + 1, cwd_buf.size())
! && errno == ERANGE) {
cwd_buf.resize(cwd_buf.size() * 2);
}
! std::replace_if(cwd_buf.begin() + 1,
cwd_buf.begin() + strlen(&cwd_buf.front()) + 1,
std::bind2nd(std::equal_to<char>(), '\\'), '/');
***************
*** 3559,3563 ****
}
! return relative_uri.resolve_against(uri(base_uri.str()));
}
} // namespace
--- 3565,3570 ----
}
! const uri result = relative_uri.resolve_against(uri(base_uri.str()));
! return result;
}
} // namespace
|