<div dir="ltr">Hi Guys,<div><br></div><div>Could you please review and consider including the attached patch. It fixes a bug which is only created by some gcc's, you will understand looking at it.</div><div><br></div><div>I reproduce using nginx with openwrt on marvell platform, so I can't tell what else might be affected.</div><div><br></div><div>How it works.</div><div>upstream do something like this</div><div>for(;;) {<br></div><div>still some data</div><div>   something->handle_header(some data)</div><div>}</div><div>and proxying module changes value of handle_header to some new function inside handle_header. if we have enough data to still stay in this loop some gcc would call a wrong pointer. (this bug is floating as if data goes in slow we exit this for loop)</div><div><br></div><div>Proposed patch only fixes consequences as it is not an upstream bug, it is a gcc bug. If there would be some trick adding volatile keyword the resulting code would be too fragile to stay cross compilable and cross platform. So checking one pointer seems a reasonable price to pay considering some gcc can do this with a loop and using this kind of loop to read remaining data is a very common pattern is the project design.</div><div><br></div><div>regards</div></div>