On Mon, 23 Mar 2009 11:07:16 -0400, Qian Xu <quian...@stud.tu-ilmenau.de>
wrote:

I have spent one day to find out an error.

-----------------------------------------------------------------
class MyTime
{
  this(char[] timestring)
  {
     Time t;
     int p = tango.time.TimeStamp.iso8601(timestring, t);
     //...
  }
  // other methods
}
unittest
{
  MyTime mt = new MyTime("01:10:20,050");
assert(MyTime.addMillis(mt, 1).toString() == "01:10:20,051"); // sometimes
failed
}
-----------------------------------------------------------------

I ran this unit-test together with some other tests. Sometimes no error,
sometimes with errors.

Finally I have added timestring.dup in constructor, the problem does not
appear any more.

Oh god. I have to add ".dup" at the end of every string to avoid potential
program errors. This is so incredible....


Best regards
Qian Xu

Coincidentally, someone else discovered a buffer-overrun bug in
tango.text.convert.TimeStamp, see
http://www.dsource.org/projects/tango/forums/topic/704

Please try downloading the latest trunk code and see if your code still
fails.

You should not have to .dup the string, if you do, that is a bug.

-Steve

Reply via email to