[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57996] trunk/blender/source/blender/ editors/interface/interface_handlers.c: Fix #36001: crashing copying long strings in text buttons.
Brecht Van Lommel
brechtvanlommel at pandora.be
Thu Jul 4 16:37:38 CEST 2013
Revision: 57996
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57996
Author: blendix
Date: 2013-07-04 14:37:38 +0000 (Thu, 04 Jul 2013)
Log Message:
-----------
Fix #36001: crashing copying long strings in text buttons.
Modified Paths:
--------------
trunk/blender/source/blender/editors/interface/interface_handlers.c
Modified: trunk/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_handlers.c 2013-07-04 14:11:42 UTC (rev 57995)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c 2013-07-04 14:37:38 UTC (rev 57996)
@@ -1852,7 +1852,6 @@
static bool ui_textedit_copypaste(uiBut *but, uiHandleButtonData *data, const int mode)
{
- char buf[UI_MAX_DRAW_STR] = {0};
char *str, *p, *pbuf;
int x;
bool changed = false;
@@ -1868,6 +1867,7 @@
p = pbuf = WM_clipboard_text_get(0);
if (p && p[0]) {
+ char buf[UI_MAX_DRAW_STR] = {0};
unsigned int y;
buf_len = 0;
while (*p && *p != '\r' && *p != '\n' && buf_len < UI_MAX_DRAW_STR - 1) {
@@ -1904,14 +1904,16 @@
/* cut & copy */
else if (ELEM(mode, UI_TEXTEDIT_COPY, UI_TEXTEDIT_CUT)) {
/* copy the contents to the copypaste buffer */
- for (x = but->selsta; x <= but->selend; x++) {
- if (x == but->selend)
- buf[x] = '\0';
- else
- buf[(x - but->selsta)] = str[x];
- }
+ int sellen = but->selend - but->selsta;
+ char *buf = MEM_callocN(sizeof(char)*(sellen + 1), "ui_textedit_copypaste");
+ for (x = 0; x < sellen; x++)
+ buf[x] = str[but->selsta + x];
+ buf[sellen] = '\0';
+
WM_clipboard_text_set(buf, 0);
+
+ MEM_freeN(buf);
/* for cut only, delete the selection afterwards */
if (mode == UI_TEXTEDIT_CUT) {
More information about the Bf-blender-cvs
mailing list