Mercurial > emacs
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 |