Blob Blame History Raw
--- src/c/alloc_2.d.orig	2016-12-19 03:25:00.000000000 -0700
+++ src/c/alloc_2.d	2017-02-23 11:33:47.926290573 -0700
@@ -760,8 +760,10 @@ to_bitmap(void *x, void *y)
 void
 init_alloc(void)
 {
+#ifdef GBC_BOEHM_PRECISE
   union cl_lispunion o;
   struct ecl_cons c;
+#endif
   int i;
   if (alloc_initialized) return;
   alloc_initialized = TRUE;
--- src/c/cinit.d.orig	2016-12-19 03:25:00.000000000 -0700
+++ src/c/cinit.d	2017-02-23 11:33:47.927290568 -0700
@@ -171,6 +171,7 @@ static cl_object si_simple_toplevel ()
       ecl_prin1(sentence, output);
     }
   } ECL_CATCH_ALL_END;
+  return ECL_NIL;
 }
 
 int
--- src/c/compiler.d.orig	2016-12-19 03:25:00.000000000 -0700
+++ src/c/compiler.d	2017-02-23 11:33:47.927290568 -0700
@@ -3102,7 +3102,7 @@ si_valid_function_name_p(cl_object name)
 cl_object
 si_make_lambda(cl_object name, cl_object rest)
 {
-  cl_object lambda;
+  cl_object lambda = ECL_NIL;
   const cl_env_ptr the_env = ecl_process_env();
   volatile cl_compiler_env_ptr old_c_env = the_env->c_env;
   struct cl_compiler_env new_c_env;
--- src/c/ffi.d.orig	2016-12-19 03:25:00.000000000 -0700
+++ src/c/ffi.d	2017-02-23 11:33:47.927290568 -0700
@@ -676,7 +676,7 @@ si_load_foreign_module(cl_object filenam
 #if !defined(ENABLE_DLOPEN)
   FEerror("SI:LOAD-FOREIGN-MODULE does not work when ECL is statically linked", 0);
 #else
-  cl_object output;
+  cl_object output = ECL_NIL;
 
 # ifdef ECL_THREADS
   mp_get_lock(1, ecl_symbol_value(@'mp::+load-compile-lock+'));
--- src/c/ffi/libraries.d.orig	2016-12-19 03:25:00.000000000 -0700
+++ src/c/ffi/libraries.d	2017-02-23 11:33:47.927290568 -0700
@@ -284,7 +284,6 @@ cl_object
 ecl_library_open(cl_object filename, bool force_reload) {
   cl_object block;
   bool self_destruct = 0;
-  char *filename_string;
 
   /* Coerces to a file name but does not merge with cwd */
   filename = coerce_to_physical_pathname(filename);
--- src/c/file.d.orig	2016-12-19 03:25:00.000000000 -0700
+++ src/c/file.d	2017-02-23 11:34:20.968112017 -0700
@@ -1100,7 +1100,7 @@ static int
 utf_8_encoder(cl_object stream, unsigned char *buffer, ecl_character c)
 {
   int nbytes;
-  if (c < 0) {
+  if (c < 0 || c > 0x1FFFFFL) {
     nbytes = 0;
   } else if (c <= 0x7F) {
     buffer[0] = c;
@@ -1115,7 +1115,7 @@ utf_8_encoder(cl_object stream, unsigned
     buffer[1] = (c & 0x3f) | 0x80; c >>= 6;
     buffer[0] = c | 0xE0;
     nbytes = 3;
-  } else if (c <= 0x1FFFFFL) {
+  } else {
     buffer[3] = (c & 0x3f) | 0x80; c >>= 6;
     buffer[2] = (c & 0x3f) | 0x80; c >>= 6;
     buffer[1] = (c & 0x3f) | 0x80; c >>= 6;
@@ -1626,7 +1626,7 @@ ecl_make_string_input_stream(cl_object s
   strm->stream.flags = ECL_STREAM_DEFAULT_FORMAT;
   strm->stream.byte_size = 8;
 #else
-  if (ECL_BASE_STRING_P(strng) == t_base_string) {
+  if (ECL_BASE_STRING_P(strng)) {
     strm->stream.format = @':latin-1';
     strm->stream.flags = ECL_STREAM_LATIN_1;
     strm->stream.byte_size = 8;
@@ -5126,7 +5126,7 @@ ecl_open_stream(cl_object fn, enum ecl_s
     FEerror("Illegal stream mode ~S", 1, ecl_make_fixnum(smm));
   }
   if (flags & ECL_STREAM_C_STREAM) {
-    FILE *fp;
+    FILE *fp = NULL;
     safe_close(f);
     /* We do not use fdopen() because Windows seems to
      * have problems with the resulting streams. Furthermore, even for
--- src/cmp/cmpcatch.lsp.orig	2016-12-19 03:25:00.000000000 -0700
+++ src/cmp/cmpcatch.lsp	2017-02-23 10:09:52.183082215 -0700
@@ -76,6 +76,7 @@
     (let ((*unwind-exit* (cons 'FRAME *unwind-exit*))
           (*destination* 'VALUES))
       (c2expr* form))
+    (wt-nl "  next_fr = NULL;")
     (wt-nl "}")
     (wt-nl "ecl_frs_pop(cl_env_copy);")
     ;; Here we save the values of the form which might have been
--- src/cmp/cmptop.lsp.orig	2016-12-19 03:25:00.000000000 -0700
+++ src/cmp/cmptop.lsp	2017-02-23 11:33:47.928290563 -0700
@@ -438,7 +438,7 @@
     (wt-nl "volatile cl_object lex" *level* "[" *max-lex* "];"))
 
   (unless (eq closure-type 'CLOSURE)
-    (wt-nl "cl_object " *volatile* "env0;"))
+    (wt-nl "cl_object " *volatile* "env0 = ECL_NIL;"))
 
   (when  (plusp *max-env*)
     ;; Closure structure has to be marked volatile or else GCC may
--- src/cmp/cmpwt.lsp.orig	2016-12-19 03:25:00.000000000 -0700
+++ src/cmp/cmpwt.lsp	2017-02-23 10:09:52.197082134 -0700
@@ -105,10 +105,10 @@
                     (*wt-data-column* 80)
                     (s (with-output-to-string (stream)
                          (wt-filtered-data string stream))))
-               (format stream "static const struct ecl_base_string ~A[] = {
+               (format stream "static const struct ecl_base_string ~A[] = { {
         (int8_t)t_base_string, 0, ecl_aet_bc, 0,
         ECL_NIL, (cl_index)~D, (cl_index)~D,
-        (ecl_base_char*)~A };~%"
+        (ecl_base_char*)~A } };~%"
                        name *wt-string-size* *wt-string-size* s)
                name))
            (output-c-strings (strings stream)
--- src/c/numbers/ceiling.d.orig	2016-12-19 03:25:00.000000000 -0700
+++ src/c/numbers/ceiling.d	2017-02-23 11:33:47.928290563 -0700
@@ -138,7 +138,7 @@ ecl_ceiling2(cl_object x, cl_object y)
     }
 #endif
     default:
-      (void)0; /*Never reached */
+      __builtin_unreachable(); /*Never reached */
     }
     break;
   case t_bignum:
@@ -184,7 +184,7 @@ ecl_ceiling2(cl_object x, cl_object y)
     }
 #endif
     default:
-      (void)0; /*Never reached */
+      __builtin_unreachable(); /*Never reached */
     }
     break;
   case t_ratio:
--- src/c/num_log.d.orig	2016-12-19 03:25:00.000000000 -0700
+++ src/c/num_log.d	2017-02-23 11:33:47.929290557 -0700
@@ -476,7 +476,7 @@ cl_object
 si_bit_array_op(cl_object o, cl_object x, cl_object y, cl_object r)
 {
   cl_fixnum i, j, n, d;
-  cl_object r0;
+  cl_object r0 = ECL_NIL;
   bit_operator op;
   bool replace = FALSE;
   int xi, yi, ri;
--- src/c/printer/float_to_digits.d.orig	2016-12-19 03:25:00.000000000 -0700
+++ src/c/printer/float_to_digits.d	2017-02-23 11:33:47.929290557 -0700
@@ -176,7 +176,6 @@ change_precision(float_approx *approx, c
     {
       cl_object e1 = cl_expt(PRINT_BASE, position);
       cl_object e2 = ecl_divide(e1, ecl_make_fixnum(2));
-      cl_object e3 = cl_expt(PRINT_BASE, k); 
       if (ecl_greatereq(ecl_plus(approx->r, ecl_times(approx->s, e1)),
                         ecl_times(approx->s, e2)))
         position = ecl_one_minus(position);
--- src/c/serialize.d.orig	2016-12-19 03:25:00.000000000 -0700
+++ src/c/serialize.d	2017-02-23 11:33:47.929290557 -0700
@@ -114,7 +114,7 @@ fix_to_ptr(cl_object ptr)
 static cl_object
 enqueue(pool_t pool, cl_object what)
 {
-  cl_object record, index;
+  cl_object index;
   if (ECL_FIXNUMP(what) || ECL_CHARACTERP(what) || what == OBJNULL) {
     return what;
   }
--- src/c/unixfsys.d.orig	2016-12-19 03:25:00.000000000 -0700
+++ src/c/unixfsys.d	2017-02-23 11:33:47.929290557 -0700
@@ -478,7 +478,9 @@ ecl_file_len(int f)
 
 @(defun rename-file (oldn newn &key (if_exists @':error'))
   cl_object old_filename, new_filename, old_truename, new_truename;
+#ifdef ECL_MS_WINDOWS_HOST
   int error;
+#endif
   @
 
   /* 1) Get the old filename, and complain if it has wild components,
@@ -682,7 +684,10 @@ ecl_homedir_pathname(cl_object user)
 {
   cl_index i;
   cl_object namestring;
-  const char *h, *d;
+  const char *h;
+#ifdef ECL_MS_WINDOWS_HOST
+  const char *d;
+#endif
   if (!Null(user)) {
 #ifdef HAVE_PWD_H
     struct passwd *pwent = NULL;
--- src/h/ecl-inl.h.orig	2016-12-19 03:25:00.000000000 -0700
+++ src/h/ecl-inl.h	2017-02-23 10:09:52.199082122 -0700
@@ -119,10 +119,10 @@
         static const cl_object name = (cl_object)(& name ## _data)
 
 #define ecl_def_ct_vector(name,type,raw,len,static,const)               \
-        static const struct ecl_vector name ## _data = {                 \
+        static const struct ecl_vector name ## _data = {                \
                 (int8_t)t_vector, 0, (type), 0,                         \
-                ECL_NIL, (cl_index)(len), (cl_index)(len),                 \
-                ecl_cast_ptr(cl_object*,raw), 0 };                      \
+                ECL_NIL, (cl_index)(len), (cl_index)(len),              \
+                { ecl_cast_ptr(cl_object*,raw) }, 0 };                  \
         static const cl_object name = (cl_object)(& name ## _data)
 
 #ifdef ECL_SSE2
--- src/h/stacks.h.orig	2016-12-19 03:25:00.000000000 -0700
+++ src/h/stacks.h	2017-02-23 10:09:52.199082122 -0700
@@ -390,7 +390,7 @@ extern ECL_API ecl_frame_ptr _ecl_frs_pu
         } else {
 
 #define ECL_UNWIND_PROTECT_EXIT \
-        __unwinding=0; } \
+        __unwinding=0; __next_fr=NULL; } \
         ecl_frs_pop(__the_env); \
         __nr = ecl_stack_push_values(__the_env);
 
--- src/Makefile.in.orig	2016-12-19 03:25:00.000000000 -0700
+++ src/Makefile.in	2017-02-23 12:18:42.610641001 -0700
@@ -134,9 +134,9 @@ c/ecl/external.h: $(top_srcdir)/h/extern
 # rsync updates of the source tree.
 $(srcdir)/c/symbols_list2.h: $(srcdir)/c/symbols_list.h Makefile
 	cat $(srcdir)/c/symbols_list.h | \
-	sed -e 's%{\([A-Z ]*.*".*"\),[^,]*,[ ]*NULL,.*}%{\1,NULL}%g' \
-	    -e 's%{\([A-Z ]*.*".*"\),[^,]*,[ ]*\([^,]*\),.*}%{\1,"\2"}%g' \
-	    -e 's%{NULL.*%{NULL,NULL}};%' | \
+	sed -e 's%{{\([A-Z ]*.*".*"\),[^,]*,[ ]*NULL,.*}}%{\1,NULL}%g' \
+	    -e 's%{{\([A-Z ]*.*".*"\),[^,]*,[ ]*\([^,]*\),.*}}%{\1,"\2"}%g' \
+	    -e 's%{{NULL.*%{NULL,NULL}};%' | \
 	sed -e 's%"\(IF_[A-Z0-9]*\)(\([^)]*\))"%\1("\2")%g' > tmp.h
 	mv tmp.h $@