Date: Tue, 12 Jul 1994 12:13:28 +0100 (CET) From: "Roland Exler" Sender: k3a0270 AT pop DOT uni-linz DOT ac DOT at Reply-To: R DOT Exler AT jk DOT uni-linz DOT ac DOT at To: Subject: bug in libgrx I've to alloc all 256 colors availiable by my application, but because GrBlack and GrWhite are pre-defined there are only 254 colors free. So I used GrFreeColor(GrBlack()) and GrFreeColor(GrWhite()) to get all 256 colors free. This works fine if I then get my colors with GrAllocColor, but if I used GrAllocCell to get all 256 colors, I've still got only 254! Looking at the source of function GrFreeColor in libgrx\src\colors.c I found that the color-state is set to availiable, but the number of free colors isn't updated. GrAllocColor doesn't check freecolors, but GrAllocCell does! So if you change function GrFreeColor by the included new one and rebuild the library, anything will work ok. (I hope i've not built in new side-effects) Roland +---------------------------------------+---------------------------+ I Roland Exler I EMAIL: I I Universitaet Linz I R DOT Exler AT jk DOT uni-linz DOT ac DOT at I I Institut fuer Elektrische Messtechnik I I I Altenbergerstr. 69 I Phone: I I A-4040 Linz, AUSTRIA I + 43 732 2468 9205 I +---------------------------------------+---------------------------+ void GrFreeColor(int n) { color *c; if(init_done() && !RGBmode && ((unsigned)n < (unsigned)_GrNumColors) && ((c = &colortable[n])->state != C_FREE)) { if(c->n > 0) c->n--; /* original if(c->n == 0) c->state = C_FREE; Exler! */ if(c->n == 0) {c->state = C_FREE; freecolors++;} } }