Bug #61178 Incorrect implementation of intersect(ulonglong) in non-optimized Bitmap class
| Submitted: | 15 May 2011 15:10 | Modified: | 15 May 2011 15:50 |
|---|---|---|---|
| Reporter: | Alexey Kopytov | Email Updates: | |
| Status: | Verified | Impact on me: | |
| Category: | MySQL Server: General | Severity: | S3 (Non-critical) |
| Version: | 5.1, 5.5 | OS: | Any |
| Assigned to: | CPU Architecture: | Any |
[15 May 2011 15:50]
Valeriy Kravchuk
Indeed, bitmap_init() ends up with:
bitmap_clear_all(map);
and it is defined in my_bitmap.h as:
#define bitmap_clear_all(MAP) \
{ memset((MAP)->bitmap, 0, 4*no_words_in_map((MAP))); }
[25 Nov 2014 9:29]
Laurynas Biveinis
This has been fixed in 5.7.1 in revno 5170.
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.050 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.
Description: In "template <uint default_width> class Bitmap", intersect(ulonglong) is implemented as follows: void intersect(ulonglong map2buff) { MY_BITMAP map2; bitmap_init(&map2, (uint32 *)&map2buff, sizeof(ulonglong)*8, 0); bitmap_intersect(&map, &map2); } This implementation does not take into account that bitmap_init() initializes the supplied buffer with zeroes. As a result, 0 is always returned due to intersecting with a zero bitmap. How to repeat: Examine the code in Bitmap<default_width>::intersect(ulonglong map2buff).