Re: [Inkscape-devel] Why is the position of this line of code so touchy?
2014/1/24 mathog <mathog@...1176...>:
This line is completely equivalent to replacing it with a call to cairo_save and adding a call to cairo_restore at the very end of the containing scope.
You cannot move this line into a different function, because then the destructor (and hence cairo_restore) gets called when decorateItem() returns.
Except my code ONLY works if it is moved into another function! That's what is driving me nuts. I will have to trace this code thoroughly, as there must be a dangling transformation or an extra cairo_restore or cairo_save somewhere.
Please post a more complete listing of the good and the malfunctioning version of your code. I'm sure we'll find the problem then. The "call, line1, line2" etc. descriptions in your initial e-mail are a little insufficient to figure out what is going on.
I guess. I am not a fan of implicit side effects unless there is absolutely no way around it. Here
dc.save() blah dc.restore()
would have worked, and it would have been immediately apparent to a maintenance programmer what was going on. Or is the ::Save stuff in there to clean up in case there is an exception and the code jumps to a handler, without ever returning from these functions?
You can add an early return and forget about adding the cleanup code, there can be an exception, or you can simply forget about adding he restore(). The ::Save object ensures proper cleanup in all of those possibilities.
Regards, Krzysztof
participants (1)
-
Krzysztof Kosiński