diff options
| author | Paul Eggert | 2011-03-23 21:17:44 -0700 |
|---|---|---|
| committer | Paul Eggert | 2011-03-23 21:17:44 -0700 |
| commit | 44f730c85e90d32d205e4d6ea2284de2eda4aacf (patch) | |
| tree | 421eb5016b705b6d111d4d26eb6a72084a497aeb | |
| parent | f86c98305dbfd21b29a4c358d08662da0c135522 (diff) | |
| download | emacs-44f730c85e90d32d205e4d6ea2284de2eda4aacf.tar.gz emacs-44f730c85e90d32d205e4d6ea2284de2eda4aacf.zip | |
* xselect.c (x_check_property_data): Return correct size (Bug#8335).
| -rw-r--r-- | src/ChangeLog | 4 | ||||
| -rw-r--r-- | src/xselect.c | 10 |
2 files changed, 10 insertions, 4 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index a8bda0915f6..cdde9673fbd 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,7 @@ | |||
| 1 | 2011-03-24 Paul Eggert <eggert@cs.ucla.edu> | ||
| 2 | |||
| 3 | * xselect.c (x_check_property_data): Return correct size (Bug#8335). | ||
| 4 | |||
| 1 | 2011-03-23 Paul Eggert <eggert@cs.ucla.edu> | 5 | 2011-03-23 Paul Eggert <eggert@cs.ucla.edu> |
| 2 | 6 | ||
| 3 | * xterm.c (x_make_frame_visible, same_x_server): Redo to avoid overflow | 7 | * xterm.c (x_make_frame_visible, same_x_server): Redo to avoid overflow |
diff --git a/src/xselect.c b/src/xselect.c index 5254fa96838..451b2a0b13f 100644 --- a/src/xselect.c +++ b/src/xselect.c | |||
| @@ -2190,7 +2190,8 @@ and t is the same as `SECONDARY'. */) | |||
| 2190 | ***********************************************************************/ | 2190 | ***********************************************************************/ |
| 2191 | /* Check that lisp values are of correct type for x_fill_property_data. | 2191 | /* Check that lisp values are of correct type for x_fill_property_data. |
| 2192 | That is, number, string or a cons with two numbers (low and high 16 | 2192 | That is, number, string or a cons with two numbers (low and high 16 |
| 2193 | bit parts of a 32 bit number). */ | 2193 | bit parts of a 32 bit number). Return the number of items in DATA, |
| 2194 | or -1 if there is an error. */ | ||
| 2194 | 2195 | ||
| 2195 | int | 2196 | int |
| 2196 | x_check_property_data (Lisp_Object data) | 2197 | x_check_property_data (Lisp_Object data) |
| @@ -2198,15 +2199,16 @@ x_check_property_data (Lisp_Object data) | |||
| 2198 | Lisp_Object iter; | 2199 | Lisp_Object iter; |
| 2199 | int size = 0; | 2200 | int size = 0; |
| 2200 | 2201 | ||
| 2201 | for (iter = data; CONSP (iter) && size != -1; iter = XCDR (iter), ++size) | 2202 | for (iter = data; CONSP (iter); iter = XCDR (iter)) |
| 2202 | { | 2203 | { |
| 2203 | Lisp_Object o = XCAR (iter); | 2204 | Lisp_Object o = XCAR (iter); |
| 2204 | 2205 | ||
| 2205 | if (! NUMBERP (o) && ! STRINGP (o) && ! CONSP (o)) | 2206 | if (! NUMBERP (o) && ! STRINGP (o) && ! CONSP (o)) |
| 2206 | size = -1; | 2207 | return -1; |
| 2207 | else if (CONSP (o) && | 2208 | else if (CONSP (o) && |
| 2208 | (! NUMBERP (XCAR (o)) || ! NUMBERP (XCDR (o)))) | 2209 | (! NUMBERP (XCAR (o)) || ! NUMBERP (XCDR (o)))) |
| 2209 | size = -1; | 2210 | return -1; |
| 2211 | size++; | ||
| 2210 | } | 2212 | } |
| 2211 | 2213 | ||
| 2212 | return size; | 2214 | return size; |