Coverity: UNUSED: CID 427
[sxemacs] / src / fns.c
index e438f05..d60e860 100644 (file)
--- a/src/fns.c
+++ b/src/fns.c
@@ -694,8 +694,8 @@ concat(int nargs, Lisp_Object * args,
        Lisp_Object last_tail;
        Lisp_Object prev;
        struct merge_string_extents_struct *args_mse = 0;
-       Bufbyte *string_result = 0;
-       Bufbyte *string_result_ptr = 0;
+       Bufbyte *string_result = NULL;
+       Bufbyte *string_result_ptr = NULL;
        struct gcpro gcpro1;
        int speccount = specpdl_depth();
         Charcount total_length;
@@ -889,9 +889,13 @@ concat(int nargs, Lisp_Object * args,
                                                   XINT(elt));
                        } else {
                                CHECK_CHAR_COERCE_INT(elt);
-                               string_result_ptr +=
-                                   set_charptr_emchar(string_result_ptr,
-                                                      XCHAR(elt));
+                                if(string_result_ptr != NULL) {
+                                       string_result_ptr +=
+                                               set_charptr_emchar(string_result_ptr,
+                                                                  XCHAR(elt));
+                               } else {
+                                       abort();
+                               }
                        }
                }
                if (args_mse) {
@@ -3593,14 +3597,17 @@ Characters out of the base64 alphabet are ignored.
 \f
 /* base16 encode/decode functions. */
 static Bytind
-base16_encode_1(Lstream * istream, int length, Bufbyte * to)
+base16_encode_1(Lstream * istream, int length, Bufbyte * to, int max)
 {
        Emchar ec;
-       int i;
+       int i, sz;
 
        for (i=0; i < length; i++) {
                ec = Lstream_get_emchar (istream);
-               sprintf((char *)to+2*i,"%02x", ec);
+               sz = snprintf((char *)to+2*i, 3, "%02x", ec);
+               assert( sz >= 0 && sz < 3);
+               max -= sz;
+               assert(max >= 0);
        }
 
        return 1;
@@ -3655,18 +3662,19 @@ into shorter lines.
        Charcount length;
        Bufbyte *encoded;
        Lisp_Object input, result;
+       int sz;
        int speccount = specpdl_depth();
 
        CHECK_STRING(string);
 
        length = XSTRING_CHAR_LENGTH(string);
-
+       sz = 2 * length;
        input = make_lisp_string_input_stream(string, 0, -1);
-       XMALLOC_ATOMIC_OR_ALLOCA(encoded, 2*length, Bufbyte);
-       base16_encode_1(XLSTREAM(input), length, encoded);
+       XMALLOC_ATOMIC_OR_ALLOCA(encoded, sz+1, Bufbyte);
+       base16_encode_1(XLSTREAM(input), length, encoded, sz);
        Lstream_delete(XLSTREAM(input));
-       result = make_string(encoded, 2*length);
-       XMALLOC_UNBIND(encoded, 2*length, speccount);
+       result = make_string(encoded, sz);
+       XMALLOC_UNBIND(encoded, sz+1, speccount);
 
        XSTRING(result)->plist = XSTRING(string)->plist;