forked from OSchip/llvm-project
Fix bug 19740; round-tripping a pointer through a stream doesn't work
llvm-svn: 209305
This commit is contained in:
parent
f3a11c1051
commit
ef0e8c391e
|
@ -1180,11 +1180,11 @@ num_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e,
|
|||
break;
|
||||
}
|
||||
// Stage 3
|
||||
__a[sizeof(__a)-1] = 0;
|
||||
__buf.resize(__a_end - __a);
|
||||
#ifdef _LIBCPP_LOCALE__L_EXTENSIONS
|
||||
if (sscanf_l(__a, _LIBCPP_GET_C_LOCALE, "%p", &__v) != 1)
|
||||
if (sscanf_l(__buf.c_str(), _LIBCPP_GET_C_LOCALE, "%p", &__v) != 1)
|
||||
#else
|
||||
if (__sscanf_l(__a, __cloc(), "%p", &__v) != 1)
|
||||
if (__sscanf_l(__buf.c_str(), __cloc(), "%p", &__v) != 1)
|
||||
#endif
|
||||
__err = ios_base::failbit;
|
||||
// EOF checked
|
||||
|
|
|
@ -76,4 +76,22 @@ int main()
|
|||
assert(!is.eof());
|
||||
assert(!is.fail());
|
||||
}
|
||||
{
|
||||
testbuf<char> sb("12345678");
|
||||
std::istream is(&sb);
|
||||
void* n = 0;
|
||||
is >> n;
|
||||
assert(n == (void*)0x12345678);
|
||||
assert( is.eof());
|
||||
assert(!is.fail());
|
||||
}
|
||||
{
|
||||
testbuf<wchar_t> sb(L"12345678");
|
||||
std::wistream is(&sb);
|
||||
void* n = 0;
|
||||
is >> n;
|
||||
assert(n == (void*)0x12345678);
|
||||
assert( is.eof());
|
||||
assert(!is.fail());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue