comparison src/fns.c @ 56206:1305e0463707

(Fmapcar, Fmapconcat): GCPRO the args array.
author Kim F. Storm <storm@cua.dk>
date Tue, 22 Jun 2004 14:48:10 +0000
parents 2bb92448ff94
children 98133cccc0cc
comparison
equal deleted inserted replaced
56205:307725d46543 56206:1305e0463707
3018 args[i + i] = args[i]; 3018 args[i + i] = args[i];
3019 3019
3020 for (i = 1; i < nargs; i += 2) 3020 for (i = 1; i < nargs; i += 2)
3021 args[i] = separator; 3021 args[i] = separator;
3022 3022
3023 GCPRO1 (*args);
3024 gcpro1.nvars = nargs;
3023 ret = Fconcat (nargs, args); 3025 ret = Fconcat (nargs, args);
3026 UNGCPRO;
3027
3024 SAFE_FREE_LISP (nargs); 3028 SAFE_FREE_LISP (nargs);
3025 3029
3026 return ret; 3030 return ret;
3027 } 3031 }
3028 3032
3034 Lisp_Object function, sequence; 3038 Lisp_Object function, sequence;
3035 { 3039 {
3036 register Lisp_Object len; 3040 register Lisp_Object len;
3037 register int leni; 3041 register int leni;
3038 register Lisp_Object *args; 3042 register Lisp_Object *args;
3043 struct gcpro gcpro1;
3039 Lisp_Object ret; 3044 Lisp_Object ret;
3040 USE_SAFE_ALLOCA; 3045 USE_SAFE_ALLOCA;
3041 3046
3042 len = Flength (sequence); 3047 len = Flength (sequence);
3043 leni = XFASTINT (len); 3048 leni = XFASTINT (len);
3044 3049
3045 SAFE_ALLOCA_LISP (args, leni); 3050 SAFE_ALLOCA_LISP (args, leni);
3046 3051
3047 mapcar1 (leni, args, function, sequence); 3052 mapcar1 (leni, args, function, sequence);
3048 3053
3054 GCPRO1 (*args);
3055 gcpro1.nvars = leni;
3049 ret = Flist (leni, args); 3056 ret = Flist (leni, args);
3057 UNGCPRO;
3058
3050 SAFE_FREE_LISP (leni); 3059 SAFE_FREE_LISP (leni);
3051 3060
3052 return ret; 3061 return ret;
3053 } 3062 }
3054 3063