[ 
https://issues.apache.org/jira/browse/THRIFT-4138?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16756793#comment-16756793
 ] 

Jim Apple commented on THRIFT-4138:
-----------------------------------

It seems like I should also check {{str.fail()}}, but I wonder if this is 
undefined or implementation defined behavior. It differs depending on the 
standard library:

{noformat}
#include <iostream>
#include <sstream>
#include <string>
using namespace std;

int main(int argv, char ** argc) {
  istringstream str(argc[1]);
  str.imbue(std::locale::classic());
  unsigned int i;
  str >> i;
  cout << boolalpha << str.bad() << " " << str.fail() << " " << not str.eof()
       << endl;
  cout << i << endl;
}
{noformat}

output

{noformat}
 $ clang++-5.0 -stdlib=libc++ -ggdb3 -O0 fromstr.cc && ./a.out -1
false true false
0
{noformat}
{noformat}
$ clang++-5.0 -stdlib=libstdc++ -ggdb3 -O0 fromstr.cc && ./a.out -1
false false false
4294967295
{noformat}


> Fix remaining undefined behavior invalid vptr casts in C++ library
> ------------------------------------------------------------------
>
>                 Key: THRIFT-4138
>                 URL: https://issues.apache.org/jira/browse/THRIFT-4138
>             Project: Thrift
>          Issue Type: Sub-task
>          Components: C++ - Library
>            Reporter: Jens Geyer
>            Assignee: Jim Apple
>            Priority: Major
>             Fix For: 0.11.0
>
>




--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to