My understanding of your change is that the "for (g = x->gl_list; g; g = g->g_next)" loop should just be eliminated, since the code you added would basically mean that within "if (!nogoprect && !x->gl_goprect)" x->gl_goprect would always be set to 1.
Indeed, that does appear to be an even simpler fix.
I tried a bunch of tests but I couldn't see any difference besides with the red rectangle appearing when no objects are present on the GOP canvas. Do you have any example patches and/or bug reports that you are referring to?
Not sure if this affects other platforms but on Linux you can try the following *without the patch applied*:
1) create [pd something] with no objects inside it 2) enable GOP *and* hide text options on [pd something] 3) hit OK and save patch 4) close patch 5) reopen patch and hide text option will be disabled (or more accurately never saved
You can also inspect the patch and you will discover that readwrite is saving GOP settings using the old pre-0.38 format which also does not help (meaning it cannot save hide text option).
Another test that is a bit more complicated is creating cascading GOP patchers with visible objects inside them. When I did not have the aforesaid patch applied, I would get weird results when disabling GOP while having objects embedded within it. This would sometimes leave stale objects on the screen and eventually lead to crashes.
With this thing patched, I've yet to experience those again.
For future reference, please post patches with only the necessary changes, and do not include any formatting changes. This makes it much easier to read the patches. I attached a reformatted version of your patch for an example.
Indeed, refactored diff is right, except I would also appreciate listing my name next to the edited part to somehow validate 4 hours I spent dealing with this silly but important bug :-)
Please see attached.
Ico