S
Scott
Hello,
I am running into something I have never seen before and can't
explain. Hopefully someone can help.
So I have a method that attempts to fill a string with a value with an
istringstream.
istringtream iss;
string str_val;
iss >> str_val;
This gets called hundreds of times and works, but every now and then I
get a bus error. When I run it in the debugger, it fails here - well
actually in the code that gets invoked by this. Below is the STL
method that gets called based on this. The line that is causing the
bus error is the "s.resize(0)" line. How is this possible? Why
doesn't it always fail? What would cause this line to fail? I can't
recreate the problem with a simple program. What would cause
resize() to throw an exception?
Any ideas.
template <class charT, class traits, class Allocator>
istream &
operator>> (istream &is, basic_string <charT, traits, Allocator> &s)
{
int w = is.width (0);
if (is.ipfx0 ())
{
register streambuf *sb = is.rdbuf ();
s.resize (0); <--------------------This causes bus
exception
while (1)
{
int ch = sb->sbumpc ();
I am running into something I have never seen before and can't
explain. Hopefully someone can help.
So I have a method that attempts to fill a string with a value with an
istringstream.
istringtream iss;
string str_val;
iss >> str_val;
This gets called hundreds of times and works, but every now and then I
get a bus error. When I run it in the debugger, it fails here - well
actually in the code that gets invoked by this. Below is the STL
method that gets called based on this. The line that is causing the
bus error is the "s.resize(0)" line. How is this possible? Why
doesn't it always fail? What would cause this line to fail? I can't
recreate the problem with a simple program. What would cause
resize() to throw an exception?
Any ideas.
template <class charT, class traits, class Allocator>
istream &
operator>> (istream &is, basic_string <charT, traits, Allocator> &s)
{
int w = is.width (0);
if (is.ipfx0 ())
{
register streambuf *sb = is.rdbuf ();
s.resize (0); <--------------------This causes bus
exception
while (1)
{
int ch = sb->sbumpc ();