[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