diff options
| author | Andreas Schwab | 2010-08-15 11:30:06 +0200 |
|---|---|---|
| committer | Andreas Schwab | 2010-08-15 11:30:06 +0200 |
| commit | 603dfc72ef70256c13ce0bb87246e741e17d55c6 (patch) | |
| tree | 61c9f4403cc3d76c64d85b575965008d2b538652 /src | |
| parent | c25ce9d017f6f82ae27256039d313601735dd998 (diff) | |
| download | emacs-603dfc72ef70256c13ce0bb87246e741e17d55c6.tar.gz emacs-603dfc72ef70256c13ce0bb87246e741e17d55c6.zip | |
* keyboard.c (parse_tool_bar_item): Avoid excessive use of strlen.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 4 | ||||
| -rw-r--r-- | src/keyboard.c | 31 |
2 files changed, 19 insertions, 16 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 316487359cb..fc3d815ad49 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,7 @@ | |||
| 1 | 2010-08-15 Andreas Schwab <schwab@linux-m68k.org> | ||
| 2 | |||
| 3 | * keyboard.c (parse_tool_bar_item): Avoid excessive use of strlen. | ||
| 4 | |||
| 1 | 2010-08-15 Jan Djärv <jan.h.d@swipnet.se> | 5 | 2010-08-15 Jan Djärv <jan.h.d@swipnet.se> |
| 2 | 6 | ||
| 3 | * keyboard.c (parse_tool_bar_item): malloc buf. Set TOOL_BAR_ITEM_LABEL | 7 | * keyboard.c (parse_tool_bar_item): malloc buf. Set TOOL_BAR_ITEM_LABEL |
diff --git a/src/keyboard.c b/src/keyboard.c index 8691788f418..6493fa5f9fd 100644 --- a/src/keyboard.c +++ b/src/keyboard.c | |||
| @@ -8328,35 +8328,34 @@ parse_tool_bar_item (Lisp_Object key, Lisp_Object item) | |||
| 8328 | Lisp_Object capt = PROP (TOOL_BAR_ITEM_CAPTION); | 8328 | Lisp_Object capt = PROP (TOOL_BAR_ITEM_CAPTION); |
| 8329 | const char *label = SYMBOLP (key) ? (char *) SDATA (SYMBOL_NAME (key)) : ""; | 8329 | const char *label = SYMBOLP (key) ? (char *) SDATA (SYMBOL_NAME (key)) : ""; |
| 8330 | const char *caption = STRINGP (capt) ? (char *) SDATA (capt) : ""; | 8330 | const char *caption = STRINGP (capt) ? (char *) SDATA (capt) : ""; |
| 8331 | EMACS_INT max_lbl = 2*tool_bar_max_label_size; | 8331 | EMACS_INT max_lbl = 2 * tool_bar_max_label_size; |
| 8332 | char *buf = (char *) xmalloc (max_lbl+1); | 8332 | char *buf = (char *) xmalloc (max_lbl + 1); |
| 8333 | Lisp_Object new_lbl; | 8333 | Lisp_Object new_lbl; |
| 8334 | size_t caption_len = strlen (caption); | ||
| 8334 | 8335 | ||
| 8335 | if (strlen (caption) < max_lbl && caption[0] != '\0') | 8336 | if (caption_len <= max_lbl && caption[0] != '\0') |
| 8336 | { | 8337 | { |
| 8337 | strcpy (buf, caption); | 8338 | strcpy (buf, caption); |
| 8338 | while (buf[0] != '\0' && buf[strlen (buf) -1] == '.') | 8339 | while (caption_len > 0 && buf[caption_len - 1] == '.') |
| 8339 | buf[strlen (buf)-1] = '\0'; | 8340 | caption_len--; |
| 8340 | if (strlen (buf) <= max_lbl) | 8341 | buf[caption_len] = '\0'; |
| 8341 | caption = buf; | 8342 | label = caption = buf; |
| 8342 | } | 8343 | } |
| 8343 | 8344 | ||
| 8344 | if (strlen (caption) <= max_lbl) | ||
| 8345 | label = caption; | ||
| 8346 | |||
| 8347 | if (strlen (label) <= max_lbl && label[0] != '\0') | 8345 | if (strlen (label) <= max_lbl && label[0] != '\0') |
| 8348 | { | 8346 | { |
| 8349 | int i; | 8347 | int i; |
| 8350 | if (label != buf) strcpy (buf, label); | 8348 | if (label != buf) |
| 8349 | strcpy (buf, label); | ||
| 8351 | 8350 | ||
| 8352 | for (i = 0; i < strlen (buf); ++i) | 8351 | for (i = 0; buf[i] != '\0'; ++i) |
| 8353 | { | 8352 | if (buf[i] == '-') |
| 8354 | if (buf[i] == '-') buf[i] = ' '; | 8353 | buf[i] = ' '; |
| 8355 | } | ||
| 8356 | label = buf; | 8354 | label = buf; |
| 8357 | 8355 | ||
| 8358 | } | 8356 | } |
| 8359 | else label = ""; | 8357 | else |
| 8358 | label = ""; | ||
| 8360 | 8359 | ||
| 8361 | new_lbl = Fupcase_initials (make_string (label, strlen (label))); | 8360 | new_lbl = Fupcase_initials (make_string (label, strlen (label))); |
| 8362 | if (SCHARS (new_lbl) <= tool_bar_max_label_size) | 8361 | if (SCHARS (new_lbl) <= tool_bar_max_label_size) |