aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaul Eggert2011-04-04 00:33:02 -0700
committerPaul Eggert2011-04-04 00:33:02 -0700
commit06a0259a1a1661b6128780092ff4a3dd59bc0256 (patch)
tree73f797472c0c7303eb0d7f0a1427a9bc25071f50 /src
parente7b9e80fe230ed80004673124a6f9465d89f4882 (diff)
downloademacs-06a0259a1a1661b6128780092ff4a3dd59bc0256.tar.gz
emacs-06a0259a1a1661b6128780092ff4a3dd59bc0256.zip
* lread.c (lisp_file_lexically_bound_p): Use ints rather than endptrs.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog2
-rw-r--r--src/lread.c31
2 files changed, 17 insertions, 16 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index ab296dded6f..6ee8ec17888 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,7 @@
12011-04-04 Paul Eggert <eggert@cs.ucla.edu> 12011-04-04 Paul Eggert <eggert@cs.ucla.edu>
2 2
3 * lread.c (lisp_file_lexically_bound_p): Use ints rather than endptrs.
4
3 * print.c (print_error_message): Avoid int overflow. 5 * print.c (print_error_message): Avoid int overflow.
4 6
5 * font.c (font_list_entities): Redo for clarity, 7 * font.c (font_list_entities): Redo for clarity,
diff --git a/src/lread.c b/src/lread.c
index 6a24569f552..e7bcd2b260b 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -818,7 +818,8 @@ lisp_file_lexically_bound_p (Lisp_Object readcharfun)
818 818
819 while (in_file_vars) 819 while (in_file_vars)
820 { 820 {
821 char var[100], *var_end, val[100], *val_end; 821 char var[100], val[100];
822 int i;
822 823
823 ch = READCHAR; 824 ch = READCHAR;
824 825
@@ -826,19 +827,18 @@ lisp_file_lexically_bound_p (Lisp_Object readcharfun)
826 while (ch == ' ' || ch == '\t') 827 while (ch == ' ' || ch == '\t')
827 ch = READCHAR; 828 ch = READCHAR;
828 829
829 var_end = var; 830 i = 0;
830 while (ch != ':' && ch != '\n' && ch != EOF) 831 while (ch != ':' && ch != '\n' && ch != EOF)
831 { 832 {
832 if (var_end < var + sizeof var - 1) 833 if (i < sizeof var - 1)
833 *var_end++ = ch; 834 var[i++] = ch;
834 UPDATE_BEG_END_STATE (ch); 835 UPDATE_BEG_END_STATE (ch);
835 ch = READCHAR; 836 ch = READCHAR;
836 } 837 }
837 838
838 while (var_end > var 839 while (i > 0 && (var[i - 1] == ' ' || var[i - 1] == '\t'))
839 && (var_end[-1] == ' ' || var_end[-1] == '\t')) 840 i--;
840 var_end--; 841 var[i] = '\0';
841 *var_end = '\0';
842 842
843 if (ch == ':') 843 if (ch == ':')
844 { 844 {
@@ -848,22 +848,21 @@ lisp_file_lexically_bound_p (Lisp_Object readcharfun)
848 while (ch == ' ' || ch == '\t') 848 while (ch == ' ' || ch == '\t')
849 ch = READCHAR; 849 ch = READCHAR;
850 850
851 val_end = val; 851 i = 0;
852 while (ch != ';' && ch != '\n' && ch != EOF && in_file_vars) 852 while (ch != ';' && ch != '\n' && ch != EOF && in_file_vars)
853 { 853 {
854 if (val_end < val + sizeof val - 1) 854 if (i < sizeof val - 1)
855 *val_end++ = ch; 855 val[i++] = ch;
856 UPDATE_BEG_END_STATE (ch); 856 UPDATE_BEG_END_STATE (ch);
857 ch = READCHAR; 857 ch = READCHAR;
858 } 858 }
859 if (! in_file_vars) 859 if (! in_file_vars)
860 /* The value was terminated by an end-marker, which 860 /* The value was terminated by an end-marker, which
861 remove. */ 861 remove. */
862 val_end -= 3; 862 i -= 3;
863 while (val_end > val 863 while (i > 0 && (val[i - 1] == ' ' || val[i - 1] == '\t'))
864 && (val_end[-1] == ' ' || val_end[-1] == '\t')) 864 i--;
865 val_end--; 865 val[i] = '\0';
866 *val_end = '\0';
867 866
868 if (strcmp (var, "lexical-binding") == 0) 867 if (strcmp (var, "lexical-binding") == 0)
869 /* This is it... */ 868 /* This is it... */