<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>10127</bug_id>
          
          <creation_ts>2006-10-13 10:59:36 +0400</creation_ts>
          <short_desc>Проблема при использовании boost</short_desc>
          <delta_ts>2008-09-10 21:35:27 +0400</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>boost-regex</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ilia Korolyov">korol82</reporter>
          <assigned_to name="Damir Shayhutdinov">damir</assigned_to>
          <cc>iv</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>41290</commentid>
    <comment_count>0</comment_count>
    <who name="Ilia Korolyov">korol82</who>
    <bug_when>2006-10-13 10:59:36 +0400</bug_when>
    <thetext>Актуальный сизиф. gcc 4.1.1 20060928 (ALT Linux, build 4.1.1-alt9)
Есть следующий код


int main( int argc, char** argv )
{
        try
        {
                boost::regex
re(&quot;(\\w+):\\/\\/(([^:]+?)(:(.+))?@)?([^:\\/]+)(:(\\d+))?((\\/.+?)*)(\\?(.+?))?(#(.+))?&quot;);
                boost::match_results&lt;std::string::const_iterator&gt; what;

                std::string first(&quot;http://breeze@abc.ru/index.php?v=2008#123&quot;);

                boost::regex::locale_type loc(&quot;ru_RU.cp1251&quot;);
//              re.imbue( loc );

                for( int i=0; i&lt;5; ++i )
                {
                        if(
!boost::regex_match(boost::algorithm::trim_copy(first), what, re) ) continue;
                        cerr &lt;&lt; &quot;res =  &quot; &lt;&lt; what[12].str() &lt;&lt; endl;

                        string tmp = boost::algorithm::trim_copy(first);
                        if( !boost::regex_match(tmp, what, re) ) continue;
                        cerr &lt;&lt; &quot;res2 =  &quot; &lt;&lt; what[12].str() &lt;&lt; endl;
                }

                re.imbue( loc );
        }
        catch (std::exception&amp; ex)
        {
                cerr &lt;&lt; &quot;UGLY STANDART ERROR: &quot; &lt;&lt; ex.what() &lt;&lt; endl;
                return -1;
        }
        catch(...)
        {
                cerr &lt;&lt; &quot;UGLY ERROR: UNHANDLED EXCEPTION&quot; &lt;&lt; endl;
                return -1;
        }

        return 0;
}

Данные код просто парсит URL при помощи boost::regex, есть две проблемы:
1. Строки &quot;res=...&quot; и &quot;res2=...&quot; должны быть одинаковыми, реально получается

res =  keywords=%CC%E5%E3%E0%F4%EE%ED&amp;pad_i╧╟│ь╥╟│ь╥194.67.27.46&amp;version=2008
res2 = keywords=%CC%E5%E3%E0%F4%EE%ED&amp;pad_id=190905&amp;ip=194.67.27.46&amp;version=2008

т.е. в строке &quot;res=...&quot; присутствует явный мусор

2. Раскоментирование строки re.imbue( loc ); приводит к появлению &quot;Исключение в
операции с плавающей точкой&quot;

PS Возможно я обратился не по адресу - подскажите, куда следует обратиться
Steps to Reproduce:
make &amp;&amp; run</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41291</commentid>
    <comment_count>1</comment_count>
    <who name="Ilia Korolyov">korol82</who>
    <bug_when>2006-10-13 11:03:54 +0400</bug_when>
    <thetext>Прошу прощения - слишком упростил, реально должно быть например так

std::string
first(&quot;http://breeze@abc.ru/banner.jsp?keywords=%CC%E5%E3%E0%F4%EE%ED&amp;id=1&amp;ip=1.1.1.1&amp;version=1#123&quot;);

при этом получается
res =  keywords=%CC%E5%E3%E0%F4%EE%ED&amp;iи╟Aь╥╟Aь╥.1&amp;version=1
res2 =  keywords=%CC%E5%E3%E0%F4%EE%ED&amp;id=1&amp;ip=1.1.1.1&amp;version=1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41394</commentid>
    <comment_count>2</comment_count>
    <who name="Ilia Korolyov">korol82</who>
    <bug_when>2006-10-16 19:41:44 +0400</bug_when>
    <thetext>Первая часть проблемы, скорее всего связана не с boost, а с gcc(Bug 10144), но
вторая часть с imbue() остаётся</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41395</commentid>
    <comment_count>3</comment_count>
    <who name="Damir Shayhutdinov">damir</who>
    <bug_when>2006-10-16 20:04:14 +0400</bug_when>
    <thetext>Пока времени нет подвердить или опровергнуть, до конца недели обещаю 
разобраться.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42387</commentid>
    <comment_count>4</comment_count>
    <who name="Ilia Korolyov">korol82</who>
    <bug_when>2006-11-22 10:59:25 +0300</bug_when>
    <thetext>Что-то прояснилось?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>53288</commentid>
    <comment_count>5</comment_count>
    <who name="Damir Shayhutdinov">damir</who>
    <bug_when>2007-07-29 22:15:24 +0400</bug_when>
    <thetext>На новом бусте воспроизводится?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66941</commentid>
    <comment_count>6</comment_count>
    <who name="Damir Shayhutdinov">damir</who>
    <bug_when>2008-03-29 14:20:06 +0300</bug_when>
    <thetext>В новой версии были исправления на эту тему.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>