Bug #1138: Wrap funcs in CW's GC ops as well. While this is unnecessary

according to the rules as I understand them (bug #1045), not everybody
    follows the rules. GC funcs were being called on the same GC from
    within GC ops, and the cwValidateGC caused a loop in the funcs chain
    that resulted in a crash, notably in cwPolylines.
This commit is contained in:
Eric Anholt 2004-08-26 20:32:59 +00:00
parent c8672e7ac7
commit 5335bc8a06
2 changed files with 6 additions and 1 deletions

View File

@ -65,7 +65,7 @@ cwCopyClip(GCPtr pgcDst, GCPtr pgcSrc);
static void
cwDestroyClip(GCPtr pGC);
static GCFuncs cwGCFuncs = {
GCFuncs cwGCFuncs = {
cwValidateGC,
cwChangeGC,
cwCopyGC,

View File

@ -37,14 +37,19 @@
&src_off_y)
#define PROLOGUE(pGC) do { \
pGC->funcs = pGCPrivate->wrapFuncs;\
pGC->ops = pGCPrivate->wrapOps;\
} while (0)
#define EPILOGUE(pGC) do { \
pGCPrivate->wrapFuncs = (pGC)->funcs; \
pGCPrivate->wrapOps = (pGC)->ops; \
(pGC)->funcs = &cwGCFuncs; \
(pGC)->ops = &cwGCOps; \
} while (0)
extern GCFuncs cwGCFuncs;
/*
* GC ops -- wrap each GC operation with our own function
*/