Boost logo

Boost Users :

From: Jeff Garland (jeff_at_[hidden])
Date: 2003-06-12 07:56:18


On Thu, 12 Jun 2003 08:33:53 +0200, adutoit wrote
> Hi.
>
> The following little proggie bombs if I compile it with /O3
> optimisation in Windows, using Intel compiler 7.0 and STLport
> (whatever the latest version number is). In short, I cannot use
> to_simple_string in any of my programs if I have any form of
> optimisation turned on.

Unfortunately it is very hard for me to help since I
don't have your environment. Perhaps you can put some
I/O traces in to see if we can isolate where it is crashing.
Perhaps you annotate boost/date_time/date_formatting.hpp
~ line 69 in ymd_formatter, method ymd_to_string. Here's
what you are looking for. I've added a few cout's to
gather data:

    static std::string ymd_to_string(ymd_type ymd)
    {
      typedef typename ymd_type::month_type month_type;
      std::ostringstream ss;
      ss << ymd.year;
      std::cout << "year ok" << std::endl;
      if (format_type::has_date_sep_chars()) {
        ss << format_type::month_sep_char();
      }
      //this name is a bit ugly, oh well....
      month_formatter<month_type,format_type>::format_month(ymd.month, ss);
      std::cout << "month format ok" << std::endl;
      if (format_type::has_date_sep_chars()) {
        ss << format_type::day_sep_char();
      }
      std::cout << "month ok" << std::endl;

      ss << std::setw(2) << std::setfill('0')
          << ymd.day;
      std::cout << "day ok" << std::endl;

      return ss.str();
    }

Also, this shouldn't matter, but try changing your test
to remove the leading '0' from the month:

> std::cout << to_simple_string( date( 2003,6,12) )
> << std::endl;

Thx,

Jeff


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net