fix: -Wsign-compare warnings (#336)
mixing signed and unsigned types in comparison can end up having unintended results. for example: if (-1 < 1U) printf("true\n"); else printf("false\n"); previously we silenced these warnings, instead just fix them properly via necessary casting, and in cases where the value cannot be negative (e.g width/height members) make them unsigned. Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/336 Reviewed-by: explosion-mental <explosion-mental@noreply.codeberg.org>
This commit is contained in:
parent
5cab2fb525
commit
c131b1ed83
|
@ -10,4 +10,4 @@
|
||||||
-Wbad-function-cast -Wdeclaration-after-statement
|
-Wbad-function-cast -Wdeclaration-after-statement
|
||||||
-Wmissing-prototypes -Wstrict-prototypes
|
-Wmissing-prototypes -Wstrict-prototypes
|
||||||
# silence
|
# silence
|
||||||
-Wno-sign-compare -Wno-unused-parameter -Wno-missing-field-initializers
|
-Wno-unused-parameter -Wno-missing-field-initializers
|
||||||
|
|
|
@ -36,7 +36,7 @@ bool cg_quit(arg_t status)
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
if (options->to_stdout && markcnt > 0) {
|
if (options->to_stdout && markcnt > 0) {
|
||||||
for (i = 0; i < filecnt; i++) {
|
for (i = 0; i < (unsigned int)filecnt; i++) {
|
||||||
if (files[i].flags & FF_MARK)
|
if (files[i].flags & FF_MARK)
|
||||||
printf("%s%c", files[i].name, options->using_null ? '\0' : '\n');
|
printf("%s%c", files[i].name, options->using_null ? '\0' : '\n');
|
||||||
}
|
}
|
||||||
|
@ -319,7 +319,7 @@ bool ci_drag(arg_t drag_mode)
|
||||||
float px, py;
|
float px, py;
|
||||||
XEvent e;
|
XEvent e;
|
||||||
|
|
||||||
if ((int)(img.w * img.zoom) <= win.w && (int)(img.h * img.zoom) <= win.h)
|
if ((int)(img.w * img.zoom) <= (int)win.w && (int)(img.h * img.zoom) <= (int)win.h)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
win_set_cursor(&win, drag_mode == DRAG_ABSOLUTE ? CURSOR_DRAG_ABSOLUTE : CURSOR_DRAG_RELATIVE);
|
win_set_cursor(&win, drag_mode == DRAG_ABSOLUTE ? CURSOR_DRAG_ABSOLUTE : CURSOR_DRAG_RELATIVE);
|
||||||
|
|
22
image.c
22
image.c
|
@ -473,7 +473,7 @@ bool img_load(img_t *img, const fileinfo_t *file)
|
||||||
|
|
||||||
CLEANUP void img_close(img_t *img, bool decache)
|
CLEANUP void img_close(img_t *img, bool decache)
|
||||||
{
|
{
|
||||||
int i;
|
unsigned int i;
|
||||||
|
|
||||||
if (img->multi.cnt > 0) {
|
if (img->multi.cnt > 0) {
|
||||||
for (i = 0; i < img->multi.cnt; i++) {
|
for (i = 0; i < img->multi.cnt; i++) {
|
||||||
|
@ -671,7 +671,9 @@ bool img_zoom_to(img_t *img, float z)
|
||||||
int x, y;
|
int x, y;
|
||||||
if (ZOOM_MIN <= z && z <= ZOOM_MAX) {
|
if (ZOOM_MIN <= z && z <= ZOOM_MAX) {
|
||||||
win_cursor_pos(img->win, &x, &y);
|
win_cursor_pos(img->win, &x, &y);
|
||||||
if (x < 0 || x >= img->win->w || y < 0 || y >= img->win->h) {
|
if (x < 0 || (unsigned int)x >= img->win->w ||
|
||||||
|
y < 0 || (unsigned int)y >= img->win->h)
|
||||||
|
{
|
||||||
x = img->win->w / 2;
|
x = img->win->w / 2;
|
||||||
y = img->win->h / 2;
|
y = img->win->h / 2;
|
||||||
}
|
}
|
||||||
|
@ -688,13 +690,13 @@ bool img_zoom_to(img_t *img, float z)
|
||||||
|
|
||||||
bool img_zoom(img_t *img, int d)
|
bool img_zoom(img_t *img, int d)
|
||||||
{
|
{
|
||||||
int i = d > 0 ? 0 : ARRLEN(zoom_levels)-1;
|
int i = d > 0 ? 0 : (int)ARRLEN(zoom_levels)-1;
|
||||||
while (i >= 0 && i < ARRLEN(zoom_levels) && (d > 0 ?
|
while (i >= 0 && i < (int)ARRLEN(zoom_levels) &&
|
||||||
zoom_levels[i]/100 <= img->zoom : zoom_levels[i]/100 >= img->zoom))
|
(d > 0 ? zoom_levels[i]/100 <= img->zoom : zoom_levels[i]/100 >= img->zoom))
|
||||||
{
|
{
|
||||||
i += d;
|
i += d;
|
||||||
}
|
}
|
||||||
i = MIN(MAX(i, 0), ARRLEN(zoom_levels)-1);
|
i = MIN(MAX(i, 0), (int)ARRLEN(zoom_levels)-1);
|
||||||
return img_zoom_to(img, zoom_levels[i]/100);
|
return img_zoom_to(img, zoom_levels[i]/100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -787,7 +789,7 @@ bool img_pan_edge(img_t *img, direction_t dir)
|
||||||
|
|
||||||
void img_rotate(img_t *img, degree_t d)
|
void img_rotate(img_t *img, degree_t d)
|
||||||
{
|
{
|
||||||
int i, tmp;
|
unsigned int i, tmp;
|
||||||
float ox, oy;
|
float ox, oy;
|
||||||
|
|
||||||
imlib_context_set_image(img->im);
|
imlib_context_set_image(img->im);
|
||||||
|
@ -816,7 +818,7 @@ void img_rotate(img_t *img, degree_t d)
|
||||||
|
|
||||||
void img_flip(img_t *img, flipdir_t d)
|
void img_flip(img_t *img, flipdir_t d)
|
||||||
{
|
{
|
||||||
int i;
|
unsigned int i;
|
||||||
void (*imlib_flip_op[3])(void) = {
|
void (*imlib_flip_op[3])(void) = {
|
||||||
imlib_image_flip_horizontal,
|
imlib_image_flip_horizontal,
|
||||||
imlib_image_flip_vertical,
|
imlib_image_flip_vertical,
|
||||||
|
@ -878,7 +880,7 @@ bool img_change_gamma(img_t *img, int d)
|
||||||
|
|
||||||
static bool img_frame_goto(img_t *img, int n)
|
static bool img_frame_goto(img_t *img, int n)
|
||||||
{
|
{
|
||||||
if (n < 0 || n >= img->multi.cnt || n == img->multi.sel)
|
if (n < 0 || (unsigned int)n >= img->multi.cnt || (unsigned int)n == img->multi.sel)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
img->multi.sel = n;
|
img->multi.sel = n;
|
||||||
|
@ -899,7 +901,7 @@ bool img_frame_navigate(img_t *img, int d)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
d += img->multi.sel;
|
d += img->multi.sel;
|
||||||
d = MAX(0, MIN(d, img->multi.cnt - 1));
|
d = MAX(0, MIN(d, (int)img->multi.cnt - 1));
|
||||||
|
|
||||||
return img_frame_goto(img, d);
|
return img_frame_goto(img, d);
|
||||||
}
|
}
|
||||||
|
|
8
main.c
8
main.c
|
@ -224,7 +224,7 @@ static bool check_timeouts(int *t)
|
||||||
int i = 0, tdiff, tmin = -1;
|
int i = 0, tdiff, tmin = -1;
|
||||||
struct timeval now;
|
struct timeval now;
|
||||||
|
|
||||||
while (i < ARRLEN(timeouts)) {
|
while (i < (int)ARRLEN(timeouts)) {
|
||||||
if (timeouts[i].active) {
|
if (timeouts[i].active) {
|
||||||
gettimeofday(&now, 0);
|
gettimeofday(&now, 0);
|
||||||
tdiff = TV_DIFF(&timeouts[i].when, &now);
|
tdiff = TV_DIFF(&timeouts[i].when, &now);
|
||||||
|
@ -434,11 +434,11 @@ int nav_button(void)
|
||||||
|
|
||||||
win_cursor_pos(&win, &x, &y);
|
win_cursor_pos(&win, &x, &y);
|
||||||
nw = NAV_IS_REL ? win.w * NAV_WIDTH / 100 : NAV_WIDTH;
|
nw = NAV_IS_REL ? win.w * NAV_WIDTH / 100 : NAV_WIDTH;
|
||||||
nw = MIN(nw, (win.w + 1) / 2);
|
nw = MIN(nw, ((int)win.w + 1) / 2);
|
||||||
|
|
||||||
if (x < nw)
|
if (x < nw)
|
||||||
return 0;
|
return 0;
|
||||||
else if (x < win.w-nw)
|
else if (x < (int)win.w - nw)
|
||||||
return 1;
|
return 1;
|
||||||
else
|
else
|
||||||
return 2;
|
return 2;
|
||||||
|
@ -917,7 +917,7 @@ int main(int argc, char *argv[])
|
||||||
const char *name[] = { "image-info", "thumb-info", "key-handler", "win-title" };
|
const char *name[] = { "image-info", "thumb-info", "key-handler", "win-title" };
|
||||||
const char *s = "/nsxiv/exec/";
|
const char *s = "/nsxiv/exec/";
|
||||||
|
|
||||||
for (i = 0; i < ARRLEN(cmd); i++) {
|
for (i = 0; i < (int)ARRLEN(cmd); i++) {
|
||||||
n = strlen(homedir) + strlen(dsuffix) + strlen(s) + strlen(name[i]) + 1;
|
n = strlen(homedir) + strlen(dsuffix) + strlen(s) + strlen(name[i]) + 1;
|
||||||
cmd[i]->cmd = emalloc(n);
|
cmd[i]->cmd = emalloc(n);
|
||||||
snprintf(cmd[i]->cmd, n, "%s%s%s%s", homedir, dsuffix, s, name[i]);
|
snprintf(cmd[i]->cmd, n, "%s%s%s%s", homedir, dsuffix, s, name[i]);
|
||||||
|
|
10
nsxiv.h
10
nsxiv.h
|
@ -162,9 +162,9 @@ typedef struct {
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
img_frame_t *frames;
|
img_frame_t *frames;
|
||||||
int cap;
|
unsigned int cap;
|
||||||
int cnt;
|
unsigned int cnt;
|
||||||
int sel;
|
unsigned int sel;
|
||||||
bool animate;
|
bool animate;
|
||||||
unsigned int framedelay;
|
unsigned int framedelay;
|
||||||
int length;
|
int length;
|
||||||
|
@ -403,8 +403,8 @@ struct win {
|
||||||
unsigned int bw;
|
unsigned int bw;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
int w;
|
unsigned int w;
|
||||||
int h;
|
unsigned int h;
|
||||||
Pixmap pm;
|
Pixmap pm;
|
||||||
} buf;
|
} buf;
|
||||||
|
|
||||||
|
|
2
thumbs.c
2
thumbs.c
|
@ -561,7 +561,7 @@ bool tns_zoom(tns_t *tns, int d)
|
||||||
oldzl = tns->zl;
|
oldzl = tns->zl;
|
||||||
tns->zl += -(d < 0) + (d > 0);
|
tns->zl += -(d < 0) + (d > 0);
|
||||||
tns->zl = MAX(tns->zl, 0);
|
tns->zl = MAX(tns->zl, 0);
|
||||||
tns->zl = MIN(tns->zl, ARRLEN(thumb_sizes)-1);
|
tns->zl = MIN(tns->zl, (int)ARRLEN(thumb_sizes)-1);
|
||||||
|
|
||||||
tns->bw = ((thumb_sizes[tns->zl] - 1) >> 5) + 1;
|
tns->bw = ((thumb_sizes[tns->zl] - 1) >> 5) + 1;
|
||||||
tns->bw = MIN(tns->bw, 4);
|
tns->bw = MIN(tns->bw, 4);
|
||||||
|
|
10
window.c
10
window.c
|
@ -259,7 +259,7 @@ void win_open(win_t *win)
|
||||||
ButtonReleaseMask | ButtonPressMask | KeyPressMask |
|
ButtonReleaseMask | ButtonPressMask | KeyPressMask |
|
||||||
PointerMotionMask | StructureNotifyMask);
|
PointerMotionMask | StructureNotifyMask);
|
||||||
|
|
||||||
for (i = 0; i < ARRLEN(cursors); i++) {
|
for (i = 0; i < (int)ARRLEN(cursors); i++) {
|
||||||
if (i != CURSOR_NONE)
|
if (i != CURSOR_NONE)
|
||||||
cursors[i].icon = XCreateFontCursor(e->dpy, cursors[i].name);
|
cursors[i].icon = XCreateFontCursor(e->dpy, cursors[i].name);
|
||||||
}
|
}
|
||||||
|
@ -274,12 +274,12 @@ void win_open(win_t *win)
|
||||||
n = icons[ARRLEN(icons)-1].size;
|
n = icons[ARRLEN(icons)-1].size;
|
||||||
icon_data = emalloc((n * n + 2) * sizeof(*icon_data));
|
icon_data = emalloc((n * n + 2) * sizeof(*icon_data));
|
||||||
|
|
||||||
for (i = 0; i < ARRLEN(icons); i++) {
|
for (i = 0; i < (int)ARRLEN(icons); i++) {
|
||||||
n = 0;
|
n = 0;
|
||||||
icon_data[n++] = icons[i].size;
|
icon_data[n++] = icons[i].size;
|
||||||
icon_data[n++] = icons[i].size;
|
icon_data[n++] = icons[i].size;
|
||||||
|
|
||||||
for (j = 0; j < icons[i].cnt; j++) {
|
for (j = 0; j < (int)icons[i].cnt; j++) {
|
||||||
for (c = icons[i].data[j] >> 4; c >= 0; c--)
|
for (c = icons[i].data[j] >> 4; c >= 0; c--)
|
||||||
icon_data[n++] = icon_colors[icons[i].data[j] & 0x0F];
|
icon_data[n++] = icon_colors[icons[i].data[j] & 0x0F];
|
||||||
}
|
}
|
||||||
|
@ -345,7 +345,7 @@ bool win_configure(win_t *win, XConfigureEvent *c)
|
||||||
{
|
{
|
||||||
bool changed;
|
bool changed;
|
||||||
|
|
||||||
changed = win->w != c->width || win->h + win->bar.h != c->height;
|
changed = win->w != (unsigned int)c->width || win->h + win->bar.h != (unsigned int)c->height;
|
||||||
|
|
||||||
win->x = c->x;
|
win->x = c->x;
|
||||||
win->y = c->y;
|
win->y = c->y;
|
||||||
|
@ -516,7 +516,7 @@ void win_set_title(win_t *win, const char *title, size_t len)
|
||||||
{
|
{
|
||||||
int i, targets[] = { ATOM_WM_NAME, ATOM_WM_ICON_NAME, ATOM__NET_WM_NAME, ATOM__NET_WM_ICON_NAME };
|
int i, targets[] = { ATOM_WM_NAME, ATOM_WM_ICON_NAME, ATOM__NET_WM_NAME, ATOM__NET_WM_ICON_NAME };
|
||||||
|
|
||||||
for (i = 0; i < ARRLEN(targets); ++i) {
|
for (i = 0; i < (int)ARRLEN(targets); ++i) {
|
||||||
XChangeProperty(win->env.dpy, win->xwin, atoms[targets[i]],
|
XChangeProperty(win->env.dpy, win->xwin, atoms[targets[i]],
|
||||||
atoms[ATOM_UTF8_STRING], 8, PropModeReplace,
|
atoms[ATOM_UTF8_STRING], 8, PropModeReplace,
|
||||||
(unsigned char *)title, len);
|
(unsigned char *)title, len);
|
||||||
|
|
Loading…
Reference in a new issue