diff options
| author | Eric Andersen <andersen@codepoet.org> | 2006-01-30 18:33:12 +0000 |
|---|---|---|
| committer | Eric Andersen <andersen@codepoet.org> | 2006-01-30 18:33:12 +0000 |
| commit | 2cdd4d56ffc3b467d5ffa76e3c4cd009dc311097 (patch) | |
| tree | 39987feb16177a5908fd7965f0589fdcc2874850 | |
| parent | d78aea8b8eb1da818c04929a2bddbed01a796c58 (diff) | |
| download | busybox-w32-2cdd4d56ffc3b467d5ffa76e3c4cd009dc311097.tar.gz busybox-w32-2cdd4d56ffc3b467d5ffa76e3c4cd009dc311097.tar.bz2 busybox-w32-2cdd4d56ffc3b467d5ffa76e3c4cd009dc311097.zip | |
passing around an int as a void* is a very bad idea
| -rw-r--r-- | archival/rpm.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/archival/rpm.c b/archival/rpm.c index 88e748550..7f69f0510 100644 --- a/archival/rpm.c +++ b/archival/rpm.c | |||
| @@ -247,18 +247,15 @@ rpm_index **rpm_gettags(int fd, int *num_tags) | |||
| 247 | 247 | ||
| 248 | int bsearch_rpmtag(const void *key, const void *item) | 248 | int bsearch_rpmtag(const void *key, const void *item) |
| 249 | { | 249 | { |
| 250 | int *tag = (int *)key; | ||
| 250 | rpm_index **tmp = (rpm_index **) item; | 251 | rpm_index **tmp = (rpm_index **) item; |
| 251 | /* gcc throws warnings here when sizeof(void*)!=sizeof(int) ... | 252 | return (*tag - tmp[0]->tag); |
| 252 | * it's ok to ignore it because this isn't a 'real' pointer */ | ||
| 253 | return ((int) key - tmp[0]->tag); | ||
| 254 | } | 253 | } |
| 255 | 254 | ||
| 256 | int rpm_getcount(int tag) | 255 | int rpm_getcount(int tag) |
| 257 | { | 256 | { |
| 258 | rpm_index **found; | 257 | rpm_index **found; |
| 259 | /* gcc throws warnings here when sizeof(void*)!=sizeof(int) ... | 258 | found = bsearch(&tag, mytags, tagcount, sizeof(struct rpmtag *), bsearch_rpmtag); |
| 260 | * it's ok to ignore it because tag won't be used as a pointer */ | ||
| 261 | found = bsearch((void *) tag, mytags, tagcount, sizeof(struct rpmtag *), bsearch_rpmtag); | ||
| 262 | if (!found) return 0; | 259 | if (!found) return 0; |
| 263 | else return found[0]->count; | 260 | else return found[0]->count; |
| 264 | } | 261 | } |
| @@ -266,9 +263,7 @@ int rpm_getcount(int tag) | |||
| 266 | char *rpm_getstring(int tag, int itemindex) | 263 | char *rpm_getstring(int tag, int itemindex) |
| 267 | { | 264 | { |
| 268 | rpm_index **found; | 265 | rpm_index **found; |
| 269 | /* gcc throws warnings here when sizeof(void*)!=sizeof(int) ... | 266 | found = bsearch(&tag, mytags, tagcount, sizeof(struct rpmtag *), bsearch_rpmtag); |
| 270 | * it's ok to ignore it because tag won't be used as a pointer */ | ||
| 271 | found = bsearch((void *) tag, mytags, tagcount, sizeof(struct rpmtag *), bsearch_rpmtag); | ||
| 272 | if (!found || itemindex >= found[0]->count) return NULL; | 267 | if (!found || itemindex >= found[0]->count) return NULL; |
| 273 | if (found[0]->type == RPM_STRING_TYPE || found[0]->type == RPM_I18NSTRING_TYPE || found[0]->type == RPM_STRING_ARRAY_TYPE) { | 268 | if (found[0]->type == RPM_STRING_TYPE || found[0]->type == RPM_I18NSTRING_TYPE || found[0]->type == RPM_STRING_ARRAY_TYPE) { |
| 274 | int n; | 269 | int n; |
| @@ -284,7 +279,7 @@ int rpm_getint(int tag, int itemindex) | |||
| 284 | int n, *tmpint; | 279 | int n, *tmpint; |
| 285 | /* gcc throws warnings here when sizeof(void*)!=sizeof(int) ... | 280 | /* gcc throws warnings here when sizeof(void*)!=sizeof(int) ... |
| 286 | * it's ok to ignore it because tag won't be used as a pointer */ | 281 | * it's ok to ignore it because tag won't be used as a pointer */ |
| 287 | found = bsearch((void *) tag, mytags, tagcount, sizeof(struct rpmtag *), bsearch_rpmtag); | 282 | found = bsearch(&tag, mytags, tagcount, sizeof(struct rpmtag *), bsearch_rpmtag); |
| 288 | if (!found || itemindex >= found[0]->count) return -1; | 283 | if (!found || itemindex >= found[0]->count) return -1; |
| 289 | tmpint = (int *) (map + found[0]->offset); | 284 | tmpint = (int *) (map + found[0]->offset); |
| 290 | if (found[0]->type == RPM_INT32_TYPE) { | 285 | if (found[0]->type == RPM_INT32_TYPE) { |
