Fix signess of tdefcolor
authorEon S. Jeon <esjeon@lavabit.com>
Mon, 5 Aug 2013 20:37:59 +0000 (16:37 -0400)
committerRoberto E. Vargas Caballero <k0ga@shike2.com>
Tue, 6 Aug 2013 06:32:11 +0000 (08:32 +0200)
tdefcolor() returns -1 on error, while its return type is
unsigned long. At the same time, line 1724 and 1731 are checking the
positivity of its unsigned return value.

st.c

diff --git a/st.c b/st.c
index 9cdd969..1b01353 100644 (file)
--- a/st.c
+++ b/st.c
@@ -362,7 +362,7 @@ static void tsetdirtattr(int);
 static void tsetmode(bool, bool, int *, int);
 static void tfulldirt(void);
 static void techo(char *, int);
-static ulong tdefcolor(int *, int *, int);
+static long tdefcolor(int *, int *, int);
 static inline bool match(uint, uint);
 static void ttynew(void);
 static void ttyread(void);
@@ -1626,7 +1626,7 @@ tdeleteline(int n) {
        tscrollup(term.c.y, n);
 }
 
-ulong
+long
 tdefcolor(int *attr, int *npar, int l) {
        long idx = -1;
        uint r, g, b;
@@ -1677,7 +1677,7 @@ tdefcolor(int *attr, int *npar, int l) {
 void
 tsetattr(int *attr, int l) {
        int i;
-       ulong idx;
+       long idx;
 
        for(i = 0; i < l; i++) {
                switch(attr[i]) {