Fix bug 19740; round-tripping a pointer through a stream doesn't work
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@209305 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f33ffcc651
commit
117563c516
@ -1180,11 +1180,11 @@ num_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// Stage 3
|
// Stage 3
|
||||||
__a[sizeof(__a)-1] = 0;
|
__buf.resize(__a_end - __a);
|
||||||
#ifdef _LIBCPP_LOCALE__L_EXTENSIONS
|
#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
|
#else
|
||||||
if (__sscanf_l(__a, __cloc(), "%p", &__v) != 1)
|
if (__sscanf_l(__buf.c_str(), __cloc(), "%p", &__v) != 1)
|
||||||
#endif
|
#endif
|
||||||
__err = ios_base::failbit;
|
__err = ios_base::failbit;
|
||||||
// EOF checked
|
// EOF checked
|
||||||
|
@ -76,4 +76,22 @@ int main()
|
|||||||
assert(!is.eof());
|
assert(!is.eof());
|
||||||
assert(!is.fail());
|
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…
x
Reference in New Issue
Block a user