diff options
| author | Paul Eggert | 2011-04-19 00:22:13 -0700 |
|---|---|---|
| committer | Paul Eggert | 2011-04-19 00:22:13 -0700 |
| commit | 640ee02d548592fda4d274487ef2fdc3873dfc7b (patch) | |
| tree | 979af1c451bc355895fccf8731063e2371990c31 /src | |
| parent | 6048fb2a5ade88f36ff1e50eb113726c610115d0 (diff) | |
| download | emacs-640ee02d548592fda4d274487ef2fdc3873dfc7b.tar.gz emacs-640ee02d548592fda4d274487ef2fdc3873dfc7b.zip | |
* lread.c (openp): Don't stuff size_t into an 'int'.
Use <= on length, not < on length + 1, to avoid GCC 4.6.0 warning
about possible signed overflow.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 4 | ||||
| -rw-r--r-- | src/lread.c | 14 |
2 files changed, 11 insertions, 7 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index d1ab9c4961e..5c6fa587b44 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,5 +1,9 @@ | |||
| 1 | 2011-04-19 Paul Eggert <eggert@cs.ucla.edu> | 1 | 2011-04-19 Paul Eggert <eggert@cs.ucla.edu> |
| 2 | 2 | ||
| 3 | * lread.c (openp): Don't stuff size_t into an 'int'. | ||
| 4 | Use <= on length, not < on length + 1, to avoid GCC 4.6.0 warning | ||
| 5 | about possible signed overflow. | ||
| 6 | |||
| 3 | * gtkutil.c: Fix problems found by GCC 4.6.0 on Ubuntu 10.10. | 7 | * gtkutil.c: Fix problems found by GCC 4.6.0 on Ubuntu 10.10. |
| 4 | (GDK_KEY_g): Don't define if already defined. | 8 | (GDK_KEY_g): Don't define if already defined. |
| 5 | (xg_prepare_tooltip): Avoid pointer signedness problem. | 9 | (xg_prepare_tooltip): Avoid pointer signedness problem. |
diff --git a/src/lread.c b/src/lread.c index d32f0b6a7e2..2f01b931e61 100644 --- a/src/lread.c +++ b/src/lread.c | |||
| @@ -1411,16 +1411,16 @@ int | |||
| 1411 | openp (Lisp_Object path, Lisp_Object str, Lisp_Object suffixes, Lisp_Object *storeptr, Lisp_Object predicate) | 1411 | openp (Lisp_Object path, Lisp_Object str, Lisp_Object suffixes, Lisp_Object *storeptr, Lisp_Object predicate) |
| 1412 | { | 1412 | { |
| 1413 | register int fd; | 1413 | register int fd; |
| 1414 | int fn_size = 100; | 1414 | EMACS_INT fn_size = 100; |
| 1415 | char buf[100]; | 1415 | char buf[100]; |
| 1416 | register char *fn = buf; | 1416 | register char *fn = buf; |
| 1417 | int absolute = 0; | 1417 | int absolute = 0; |
| 1418 | int want_size; | 1418 | EMACS_INT want_length; |
| 1419 | Lisp_Object filename; | 1419 | Lisp_Object filename; |
| 1420 | struct stat st; | 1420 | struct stat st; |
| 1421 | struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5, gcpro6; | 1421 | struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5, gcpro6; |
| 1422 | Lisp_Object string, tail, encoded_fn; | 1422 | Lisp_Object string, tail, encoded_fn; |
| 1423 | int max_suffix_len = 0; | 1423 | EMACS_INT max_suffix_len = 0; |
| 1424 | 1424 | ||
| 1425 | CHECK_STRING (str); | 1425 | CHECK_STRING (str); |
| 1426 | 1426 | ||
| @@ -1454,11 +1454,11 @@ openp (Lisp_Object path, Lisp_Object str, Lisp_Object suffixes, Lisp_Object *sto | |||
| 1454 | continue; | 1454 | continue; |
| 1455 | } | 1455 | } |
| 1456 | 1456 | ||
| 1457 | /* Calculate maximum size of any filename made from | 1457 | /* Calculate maximum length of any filename made from |
| 1458 | this path element/specified file name and any possible suffix. */ | 1458 | this path element/specified file name and any possible suffix. */ |
| 1459 | want_size = max_suffix_len + SBYTES (filename) + 1; | 1459 | want_length = max_suffix_len + SBYTES (filename); |
| 1460 | if (fn_size < want_size) | 1460 | if (fn_size <= want_length) |
| 1461 | fn = (char *) alloca (fn_size = 100 + want_size); | 1461 | fn = (char *) alloca (fn_size = 100 + want_length); |
| 1462 | 1462 | ||
| 1463 | /* Loop over suffixes. */ | 1463 | /* Loop over suffixes. */ |
| 1464 | for (tail = NILP (suffixes) ? Fcons (empty_unibyte_string, Qnil) : suffixes; | 1464 | for (tail = NILP (suffixes) ? Fcons (empty_unibyte_string, Qnil) : suffixes; |