I'm wondering what a commonly acceptable method of handling this failure would be, my Google-Fu's not giving me answers I like, so   I'm turning to the collective wisdom of this list. I suspect my knowledge of other languages is poisoning my thought process.<div>
<br></div><div>So parsing XML in a recursive function, with a structure that contains the relevant state of the task. My initial plan is to add a variable to the structure named "failed", and if an alloc fails I set it, and then test this after every function call that can fail, trying to bail out to the head function ASAP, where I call the free function on the partial tree I've created so far.</div>
<div><br></div><div>This puts a lot of ugly checking code in what is presently on the clean side of what I typically write. Most other languages I'd raise an exception and deal with the failure once.</div><div><br></div>
<div>I've a few existing Linux Kernel style Goto-Exceptions to keep all the error code together, and not spread throughout the meat of the functions, however my understanding is that it's a Bad Thing (tm) to goto across functions, as depending on compiler/flags there's going to have to be some stack twiddling, and while my inner assembly programmer says just store SI in the data structure, every other bone in my body is telling me this is a capitol offense.</div>
<div><br></div><div>Should I bite the bullet and turn my pretty 1 page function into a 3 page function with lots of checking, or is there a clever/easy way to quickly bail?<br><div><br></div><div><br></div><div>regards,<div>
<br></div><div>dan</div><div>--</div><div>"Within C++, there is a much smaller and cleaner language struggling to get out"</div><div>--Bjarne Stroustrup</div><br>
</div></div>