[Image-SIG] AccessInit: hash collision: 3 for both 1 and 1
Fredrik Lundh
fredrik at pythonware.com
Thu Apr 8 19:33:53 CEST 2010
The idea is that add_item should only be called once for each mode
(see ImagingAccessInit). What did you do to trick Python into calling
the module initializer multiple times?
</F>
On Mon, Apr 5, 2010 at 4:41 AM, Bill Janssen <janssen at parc.com> wrote:
> Seems to me that in libImaging, Access.c:add_item should really read
>
> static ImagingAccess
> add_item(const char* mode)
> {
> UINT32 i = hash(mode);
> /* printf("hash %s => %d\n", mode, i); */
> if (access_table[i].mode && (strcmp(mode, access_table[i].mode) != 0)) {
> fprintf(stderr, "AccessInit: hash collision: %d for both %s and %s\n",
> i, mode, access_table[i].mode);
> exit(1);
> }
> access_table[i].mode = mode;
> return &access_table[i];
> }
>
> Currently, it reads:
>
> static ImagingAccess
> add_item(const char* mode)
> {
> UINT32 i = hash(mode);
> /* printf("hash %s => %d\n", mode, i); */
> if (access_table[i].mode) {
> fprintf(stderr, "AccessInit: hash collision: %d for both %s and %s\n",
> i, mode, access_table[i].mode);
> exit(1);
> }
> access_table[i].mode = mode;
> return &access_table[i];
> }
>
> And there's a number of Google hits for "AccessInit: hash collision: 3
> for both 1 and 1", starting about the release of 1.1.7.
>
> Bill
> _______________________________________________
> Image-SIG maillist - Image-SIG at python.org
> http://mail.python.org/mailman/listinfo/image-sig
>
More information about the Image-SIG
mailing list