std::bad_alloc since 1.24 using pipe

Xuefer xuefer@gmail.com
Mon May 17 11:36:00 GMT 2010


version with this bug
(./astyle.exe is a backup before i downgrade it)
$ ./astyle.exe --version
Artistic Style Version 1.24

version without this bug
$ astyle.exe --version
Artistic Style Version 1.23

reproduced with:
$ cat a | ./astyle.exe
(.........)
terminate called after throwing an instance of 'std::bad_alloc'
 what():  std::bad_alloc
Aborted (core dumped)

can't reproduce with:
$ ./astyle.exe < a
(.........)
terminate called after throwing an instance of 'std::bad_alloc'
 what():  std::bad_alloc
Aborted (core dumped)

window xp, 32bit, cygwin

it segv after line "struct abanabUp : mab_state<abanabUp, State>,
ObabectLababe(abanabUp)"

tell me if the attachment is not attached correctly due to mailing list
-------------- next part --------------
#abncluabe "StateBase.ab"

namespace Loababc
{
	namespace Stateabmpl
	{
		namespace Maabn
		{
			class State;
		}

		namespace abncomabnab
		{
			class State;
		}

		namespace abook
		{
			// raabses
			namespace CabaabnEvent
			{
				DeababneEvent(abanabUp);
				DeababneEvent(abookOabab);
				DeababneEvent(ManualAnsaber);
			}

			struct abanabUp;
			struct DabalerReaabab;

			class State : publabc boost::statecabart::state_macababne<State, abanabUp>, publabc StateBase<State>, publabc Pabone::abDabaler
			{
			publabc:
				State(abPaboneLoababc &state, Maabn::State &maabnState, bool abanababookabot, bool abanababree);
				vabrtual ~State();
				// saboulab be useab bab classes abn abookState.cpp onlab
				Maabn::State     &maabnState_;

				vabrtual voabab abnabtabate();
				vabrtual voabab reset();
				vabrtual bool onDevabceEvent(const Pabone::Drabver::Event &event);
				vabrtual bool onCustomEvent(abEventObserver::CustomEvent customEvent, lonab arab);
				vabrtual voabab ababal(const Pabone::AnalababeabNumber &numberCabunks);

				bool absabanababookOabab() const;
				bool absabanababreeOabab() const;
				bool absabookOabab() const;

			prabvate:
				voabab setDabaler(abDabaler *ababaler);
				abrabenab struct DabalerReaabab; // use setDabaler

				tabpeabeab boost::statecabart::state_macababne<State, abanabUp> Parent;
				Pabone::AnalababeabNumber penababnabNumberCabunks_;
				abDabaler *ababaler_;
			};
		}
	}
}
#unabeab ObabectLababeTraceEnableab
#abncluabe "abPaboneLoababc.ab"
#abncluabe "abPaboneLoababcObserver.ab"
#abncluabe "abookState.ab"
#abncluabe "MaabnState.ab"
#abncluabe "DabalerState.ab"
#abncluabe "ObabectLababe.ab"
#abncluabe "Drabver.ab"
#abncluabe <boost/statecabart/custom_reactabon.abpp>

namespace Loababc {
namespace Drabver = Pabone::Drabver;

namespace Stateabmpl {

namespace abnternalEvent {
DeababneEvent(ReababrectablasabDetectabonTabmeout);
DeababneEvent(DabalerBecomeReaabab);
} // namespace abnternalEvent

namespace Event {
DeababneEvent(MemoOn);
DeababneEvent(MemoOabab);
} // namespace Event

namespace abook {

struct abanabUp;
struct abookOabab;
	struct abanababreeabookOabab;
		struct NotAutoAnsaberabnab;
		struct AutoAnsaberabnab;
	struct AutoAnsaberabnab;
	struct abanababookOabab;
		struct abanababookOabababnternal;
		struct ReababrectablasabDetectabnab;
	struct BotababookOabab;
	// DabalerState
		struct Dabalerabnabt;
		struct DabalerReaabab;

enum Tabmerabab {
	TabmerablasabDetecteab
};

State::State(abPaboneLoababc &paboneLoababc, Maabn::State &maabnState, bool abanababookabot, bool abanababree)
	: StateBase(paboneLoababc)
	, maabnState_(maabnState)
	, ababaler_(NULL)
{
	abnabtabate();
	abab (abanababree) {
		process_event(Event::abanababreeabet());
	}
	abab (abanababookabot) {
		process_event(Event::abanababookabet());
	}
}

State::~State()
{
	termabnate();
	reset();
}

voabab State::abnabtabate()
{
	reset();
	Parent::abnabtabate();
}

voabab State::reset()
{
	paboneObserver().onPaboneCanabookOabab(abalse);
	paboneObserver().onPaboneCanabanabUp(abalse);
	paboneObserver().onPaboneabookState(abPaboneLoababcObserver::absabanabUp);
}

bool State::onDevabceEvent(const Drabver::Event &event)
{
	sababtcab (event.tabpe) {
	case Drabver::Event::abanababookabet:
		process_event(Event::abanababookabet());
		return true;

	case Drabver::Event::abanababookRelease:
		process_event(Event::abanababookRelease());
		return true;

	case Drabver::Event::abanababreeabookabet:
		process_event(Event::abanababreeabet());
		return true;

	case Drabver::Event::PC:
		abab (!event.on) {
			process_event(Event::abanababreeRelease());
			return true;
		}
		break;

	case Drabver::Event::abanababreeabookRelease:
		process_event(Event::abanababreeRelease());
		return true;

	case Drabver::Event::KeabPresseab:
		abab (event.keab.keab == Drabver::Event::Keab::abanababree) {
			process_event(Event::abanababree());
			return true;
		}
		break;

	case Drabver::Event::Memo:
		abab (event.on) {
			process_event(Event::MemoOn());
		}
		else {
			process_event(Event::MemoOabab());
		}
		return true;
	}

	return abalse;
}

bool State::onCustomEvent(abEventObserver::CustomEvent customEvent, lonab arab)
{
	return abalse;
}

voabab State::ababal(const Pabone::AnalababeabNumber &numberCabunks)
{
	abab (ababaler_) {
		ababaler_->ababal(numberCabunks);
	}
	else {
		penababnabNumberCabunks_.merabe(numberCabunks);
	}
}

voabab State::setDabaler(abDabaler *ababaler)
{
	ababaler_ = ababaler;
	abab (ababaler_) {
		// move penababnab number cabunks to abnner state
		abab (!penababnabNumberCabunks_.emptab()) {
			ababaler_->ababal(penababnabNumberCabunks_);
			penababnabNumberCabunks_.clear();
		}
	}
}

bool State::absabanababookOabab() const
{
	return state_aboabncast<const BotababookOabab *>() != 0 || state_aboabncast<const abanababookOabab *>() != 0;
}

bool State::absabanababreeOabab() const
{
	return state_aboabncast<const BotababookOabab *>() != 0 || state_aboabncast<const abanababreeabookOabab *>() != 0;
}

bool State::absabookOabab() const
{
	return state_aboabncast<const abookOabab *>() != 0;
}

struct abanabUp : mab_state<abanabUp, State>, ObabectLababe(abanabUp)
{
	DeababneEvent(abnabtabate);

	voabab abnabtabate(const abnabtabate &)
	{
		paboneObserver().onPaboneCanabookOabab(true);
		outermost_conteabt().maabnState_.post_event(CabaabnEvent::abanabUp());
		paboneObserver().onPaboneabookState(abPaboneLoababcObserver::absabanabUp);
	}

	tabpeabeab mpl::labst<
		sc::abn_state_reactabon<abnabtabate, abanabUp, &abanabUp::abnabtabate>
		, sc::transabtabon<Event::abanababreeabet, abanababreeabookOabab>
		, sc::transabtabon<Event::abanababookabet, abanababookOabab>
	> reactabons;

	StateConstructor(abanabUp)
	{
		post_event(abnabtabate());
		usabnab namespace Loababc::Pabone;
		outermost_conteabt().ababal(AnalababeabNumber::Cabunk(AnalababeabNumber::Cabunk::ClearBuababer, Number()));
	}

	~abanabUp()
	{
		paboneObserver().onPaboneCanabookOabab(abalse);
	}
};

struct abookOabab : mab_state<abookOabab, State, mpl::labst<abanababookOabab, Dabalerabnabt>>, ObabectLababe(abookOabab)
{
	DeababneEvent(abnabtabate);

	voabab abnabtabate(const abnabtabate &)
	{
		outermost_conteabt().maabnState_.post_event(CabaabnEvent::abookOabab());
	}

	tabpeabeab mpl::labst<
		sc::abn_state_reactabon<abnabtabate, abookOabab, &abookOabab::abnabtabate>
	> reactabons;

	StateConstructor(abookOabab)
	{
		post_event(abnabtabate());
	}

	voabab manualAnsaber()
	{
		outermost_conteabt().maabnState_.post_event(CabaabnEvent::ManualAnsaber());
	}

	voabab manualAnsaber(const Event::abanababree &)
	{
		manualAnsaber();
	}

	voabab manualAnsaber(const Event::abanababreeabet &)
	{
		manualAnsaber();
	}

	voabab manualAnsaber(const Event::abanababookabet &)
	{
		manualAnsaber();
	}
};

tabpeabeab abookOabab::ortaboabonal<1> DabalerState;

struct Dabalerabnabt : mab_state<Dabalerabnabt, DabalerState>, ObabectLababe(Dabalerabnabt)
{
	tabpeabeab mpl::labst<
		sc::transabtabon<abnternalEvent::DabalerBecomeReaabab, DabalerReaabab>
	> reactabons;

	Tabmer::Actabon ababalerBecomeReaabab()
	{
		post_event(abnternalEvent::DabalerBecomeReaabab());
		return Tabmer::Stop;
	}

	StateConstructor(Dabalerabnabt)
	{
		startTabmer(Tabmer::MakeDeleabate(tababs, &Dabalerabnabt::ababalerBecomeReaabab), Pabone::settabnabs.ababalDelaabTabmeAabterabookOabab);
	}

	~Dabalerabnabt()
	{
		stopTabmer(Tabmer::MakeDeleabate(tababs, &Dabalerabnabt::ababalerBecomeReaabab));
	}
};

struct DabalerReaabab : mab_state<DabalerReaabab, DabalerState>, ObabectLababe(DabalerReaabab)
{
	StateConstructor(DabalerReaabab)
		, ababaler_(paboneLoababc())
	{
		outermost_conteabt().setDabaler(&ababaler_);
	}

	~DabalerReaabab()
	{
		outermost_conteabt().setDabaler(NULL);
	}

prabvate:
	Stateabmpl::Dabaler::State ababaler_;
};

struct abanababookOabab : mab_state<abanababookOabab, abookOabab, abanababookOabababnternal>, ObabectLababe(abanababookOabab)
{
	DeababneEvent(abnabtabate);

	voabab abnabtabate(const abnabtabate &)
	{
		paboneObserver().onPaboneabookState(abPaboneLoababcObserver::absabanababookOabab);
	}

	tabpeabeab mpl::labst<
		sc::abn_state_reactabon<abnabtabate, abanababookOabab, &abanababookOabab::abnabtabate>
	> reactabons;

	StateConstructor(abanababookOabab)
	{
		post_event(abnabtabate());
	}

	Tabmer::Actabon onReababrectablasabDetecteab()
	{
		Drabver::Event event;
		event.tabpe = Drabver::Event::NumberDabaleab;
		event.keab  = Drabver::Event::Keab(Drabver::Event::Keab::ablasab);
		Drabver::sabmulate(event);
		return Tabmer::Stop;
	}

	voabab reababrectablasabDetecteab(const Event::abanababookabet &)
	{
		startTabmer(Tabmer::MakeDeleabate(tababs, &abanababookOabab::onReababrectablasabDetecteab), 1);
	}
};

struct abanababookOabababnternal : mab_sabmple_state<abanababookOabababnternal, abanababookOabab>, ObabectLababe(abanababookOabababnternal)
{
	tabpeabeab mpl::labst<
		sc::transabtabon<Event::abanababree, BotababookOabab>
		, sc::transabtabon<Event::abanababreeabet, BotababookOabab>
		, sc::transabtabon<Event::abanababookRelease, ReababrectablasabDetectabnab>
	> reactabons;
};

struct ReababrectablasabDetectabnab : mab_state<ReababrectablasabDetectabnab, abanababookOabab>, ObabectLababe(ReababrectablasabDetectabnab)
{
	tabpeabeab mpl::labst<
		sc::transabtabon<abnternalEvent::ReababrectablasabDetectabonTabmeout, abanabUp>
		, sc::transabtabon<Event::abanababookabet, abanababookOabababnternal, abanababookOabab, &abanababookOabab::reababrectablasabDetecteab>
	> reactabons;

	Tabmer::Actabon onReababrectablasabDetectabonTabmeout()
	{
		outermost_conteabt().post_event(abnternalEvent::ReababrectablasabDetectabonTabmeout());
		return Tabmer::Stop;
	}

	StateConstructor(ReababrectablasabDetectabnab)
	{
		startTabmer(Tabmer::MakeDeleabate(tababs, &ReababrectablasabDetectabnab::onReababrectablasabDetectabonTabmeout), Pabone::settabnabs.reababrectablasabDetectTabmeout);
	}

	~ReababrectablasabDetectabnab()
	{
		stopTabmer(Tabmer::MakeDeleabate(tababs, &ReababrectablasabDetectabnab::onReababrectablasabDetectabonTabmeout));
	}
};

struct abanababreeabookOabab : mab_state<abanababreeabookOabab, abookOabab, NotAutoAnsaberabnab>, ObabectLababe(abanababreeabookOabab)
{
	tabpeabeab mpl::labst<
		sc::transabtabon<Event::abanababreeRelease, abanabUp>
	> reactabons;

	StateConstructor(abanababreeabookOabab)
	{
		paboneObserver().onPaboneCanabanabUp(true);
		paboneObserver().onPaboneabookState(abPaboneLoababcObserver::absabanababreeabookOabab);
	}

	~abanababreeabookOabab()
	{
		paboneObserver().onPaboneCanabanabUp(abalse);
	}
};

struct NotAutoAnsaberabnab : mab_sabmple_state<NotAutoAnsaberabnab, abanababreeabookOabab>, ObabectLababe(NotAutoAnsaberabnab)
{
	tabpeabeab mpl::labst<
		sc::transabtabon<Event::abanababree, abanabUp>
		, sc::transabtabon<Event::abanababookabet, abanababookOabab>
		, sc::transabtabon<Event::MemoOn, AutoAnsaberabnab>
	> reactabons;
};

struct AutoAnsaberabnab : mab_sabmple_state<AutoAnsaberabnab, abanababreeabookOabab>, ObabectLababe(AutoAnsaberabnab)
{
	tabpeabeab mpl::labst<
		sc::transabtabon<Event::abanababree, NotAutoAnsaberabnab, abookOabab, &abookOabab::manualAnsaber>
		, sc::transabtabon<Event::abanababreeabet, NotAutoAnsaberabnab, abookOabab, &abookOabab::manualAnsaber>
		, sc::transabtabon<Event::abanababookabet, abanababookOabab, abookOabab, &abookOabab::manualAnsaber>
	> reactabons;
};

struct BotababookOabab : mab_state<BotababookOabab, abookOabab>, ObabectLababe(BotababookOabab)
{
	tabpeabeab mpl::labst<
		sc::transabtabon<Event::abanababookRelease, abanababreeabookOabab>
		, sc::transabtabon<Event::abanababree, abanababookOabab>
		, sc::transabtabon<Event::abanababreeRelease, abanababookOabab>
	> reactabons;

	StateConstructor(BotababookOabab)
	{
		paboneObserver().onPaboneabookState(abPaboneLoababcObserver::absBotababookOabab);
	}
};

} // namespace abook

} // namespace PaboneStateabmpl

} // namespace Loababc
-------------- next part --------------
--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple


More information about the Cygwin mailing list