comparison src/chartab.c @ 89484:5c41371d228b

(map_char_table): Protect `range' from GC. (map_char_table_for_charset): Likewise.
author Andreas Schwab <schwab@suse.de>
date Wed, 10 Sep 2003 10:52:45 +0000
parents 2f877ed80fa6
children c92884b9ca4a
comparison
equal deleted inserted replaced
89483:2f877ed80fa6 89484:5c41371d228b
771 void (*c_function) P_ ((Lisp_Object, Lisp_Object, Lisp_Object)); 771 void (*c_function) P_ ((Lisp_Object, Lisp_Object, Lisp_Object));
772 Lisp_Object function, table, arg; 772 Lisp_Object function, table, arg;
773 { 773 {
774 Lisp_Object range, val; 774 Lisp_Object range, val;
775 int c, i; 775 int c, i;
776 struct gcpro gcpro1;
776 777
777 range = Fcons (make_number (0), Qnil); 778 range = Fcons (make_number (0), Qnil);
779 GCPRO1 (range);
778 val = XCHAR_TABLE (table)->ascii; 780 val = XCHAR_TABLE (table)->ascii;
779 if (SUB_CHAR_TABLE_P (val)) 781 if (SUB_CHAR_TABLE_P (val))
780 val = XSUB_CHAR_TABLE (val)->contents[0]; 782 val = XSUB_CHAR_TABLE (val)->contents[0];
781 783
782 for (i = 0, c = 0; i < chartab_size[0]; i++, c += chartab_chars[0]) 784 for (i = 0, c = 0; i < chartab_size[0]; i++, c += chartab_chars[0])
816 if (c_function) 818 if (c_function)
817 (*c_function) (arg, range, val); 819 (*c_function) (arg, range, val);
818 else 820 else
819 call2 (function, range, val); 821 call2 (function, range, val);
820 } 822 }
823
824 UNGCPRO;
821 } 825 }
822 826
823 DEFUN ("map-char-table", Fmap_char_table, Smap_char_table, 827 DEFUN ("map-char-table", Fmap_char_table, Smap_char_table,
824 2, 2, 0, 828 2, 2, 0,
825 doc: /* 829 doc: /*
911 struct charset *charset; 915 struct charset *charset;
912 unsigned from, to; 916 unsigned from, to;
913 { 917 {
914 Lisp_Object range; 918 Lisp_Object range;
915 int c, i; 919 int c, i;
920 struct gcpro gcpro1;
916 921
917 range = Fcons (Qnil, Qnil); 922 range = Fcons (Qnil, Qnil);
923 GCPRO1 (range);
918 924
919 for (i = 0, c = 0; i < chartab_size[0]; i++, c += chartab_chars[0]) 925 for (i = 0, c = 0; i < chartab_size[0]; i++, c += chartab_chars[0])
920 { 926 {
921 Lisp_Object this; 927 Lisp_Object this;
922 928
943 if (c_function) 949 if (c_function)
944 (*c_function) (arg, range); 950 (*c_function) (arg, range);
945 else 951 else
946 call2 (function, range, arg); 952 call2 (function, range, arg);
947 } 953 }
954
955 UNGCPRO;
948 } 956 }
949 957
950 958
951 void 959 void
952 syms_of_chartab () 960 syms_of_chartab ()