OpenSmalltalk
/
opensmalltalk-vm
|
Cog
|
56 mins and 25 secs
|
Nicolas Cellier
|
Workaround a Squeak3D crash
After proper instrumentation, it appears that a reproducible crash case provided by Stephane Rollandin is due to attempt of removing a face which is not in the fillList. This happens in the special case when `leftEdge == lastIntersection`, and the code attempts to remove `leftEdge->rightFace` which seem to not always be on the fillList. It's not obvious to understand if this is really an invariant of the loop, or a wrong expectation. Thus, as a workaround, protect the removal by a preliminary inclusion test.
Note that removing or adding a face should change its `B3D_FACE_ACTIVE` flags. Normally, we remove then add, so do not have to toggle the flag. But if we do not remove, then we must toggle, otherwise another invariant will break and cause crash in `b3dToggleTopFills`.
|
|
|
Would you like to stay up-to-date with the upcoming Travis CI build environment updates? We set up a mailing list for you!
SIGN UP HERE
|
|
|
|
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"action": {
"@type": "ViewAction",
"url": "https://travis-ci.org/OpenSmalltalk/opensmalltalk-vm/builds/648005026?utm_medium=notification&utm_source=email",
"name": "View Build"
},
"description": "View Build #1943 on Travis CI"
}
</script>