[Boost-bugs] [Boost C++ Libraries] #2143: regex_search failes (exception: Memory exhausted)

Subject: [Boost-bugs] [Boost C++ Libraries] #2143: regex_search failes (exception: Memory exhausted)
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2008-07-24 11:20:43


#2143: regex_search failes (exception: Memory exhausted)
--------------------------+-------------------------------------------------
 Reporter: anonymous | Owner: johnmaddock
     Type: Bugs | Status: new
Milestone: Boost 1.36.0 | Component: regex
  Version: Boost 1.35.0 | Severity: Problem
 Keywords: |
--------------------------+-------------------------------------------------
 Sorry for using Japanese.
 In this code, boost::regex_search() failes and throws Exception(Memory
 exhausted).
 I tried both VC++7.1/VC++8.0.

 I remember boost 1.33, 1.34, 1.35 gave the same result, but
 I don't know why.

 I think, using back-reference and relatively long input line tends to
 result in this kind of failure.
 {{{
 #include <iostream>
 #include <string>
 #include <boost/regex.hpp>

 int main()
 {
         boost::wregex re(L"(.+)[#「\\1」に傍点]");

         std::wstring s =
         L" 女はやがて帰って来た[#「帰って来た」は底本では「帰った来た」]。"
         L"今度は正面が見えた。三四郎の弁当はもうしまいがけである。"
         L"下を向いて一生懸命に箸《はし》を突っ込んで二口三口ほおばったが、"
         L"女は、どうもまだ元の席へ帰らないらしい。"
         L"もしやと思って、ひょいと目を上げて見るとやっぱり正面に立っていた。"
         L"しかし三四郎が目を上げると同時に女は動きだした。"
         L"ただ三四郎の横を通って、自分の座へ帰るべきところを、すぐと前へ来て、"
         L"からだを横へ向けて、窓から首を出して、静かに外をながめだした。"
         L"風が強くあたって、鬢《びん》がふわふわするところが三四郎の目にはいった。"
         L"この時三四郎はからになった弁当の折《おり》を力いっぱいに窓からほうり出した。"
         L"女の窓と三四郎の窓は一軒おきの隣であった。"
         L"風に逆らってなげた折の蓋《ふた》が白く舞いもどったように見えた時、"
         L"三四郎はとんだことをしたのかと気がついて、ふと女の顔を見た。"
         L"顔はあいにく列車の外に出ていた。"
         L"けれども、女は静かに首を引っ込めて更紗《さらさ》のハンケチで"
         L"額のところを丁寧にふき始めた。"
         L"三四郎はともかくもあやまるほうが安全だと考えた。"
         L"「ごめんなさい」と言った。";

         try {
                 boost::wsmatch what;
                 boost::regex_search(s, what, re);
         } catch (const std::exception& ex) {
                 std::cerr << "Caught exception: " << ex.what() <<
 std::endl;
         }
         return 0;
 }
 }}}

-- 
Ticket URL: <http://svn.boost.org/trac/boost/ticket/2143>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:49:58 UTC