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 <jans...@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-...@python.org > http://mail.python.org/mailman/listinfo/image-sig > _______________________________________________ Image-SIG maillist - Image-SIG@python.org http://mail.python.org/mailman/listinfo/image-sig