[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16882] trunk/blender/source/blender/src/ interface.c: Bugfix #17723
Ton Roosendaal
ton at blender.org
Thu Oct 2 14:29:46 CEST 2008
Revision: 16882
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16882
Author: ton
Date: 2008-10-02 14:29:45 +0200 (Thu, 02 Oct 2008)
Log Message:
-----------
Bugfix #17723
Clipboard copy/paste error, missing NULL check caused crashes.
Modified Paths:
--------------
trunk/blender/source/blender/src/interface.c
Modified: trunk/blender/source/blender/src/interface.c
===================================================================
--- trunk/blender/source/blender/src/interface.c 2008-10-02 08:46:04 UTC (rev 16881)
+++ trunk/blender/source/blender/src/interface.c 2008-10-02 12:29:45 UTC (rev 16882)
@@ -467,7 +467,7 @@
static int ui_but_copy_paste(uiBut *but, char mode)
{
void *poin;
- char buf[UI_MAX_DRAW_STR+1];
+ char buf[UI_MAX_DRAW_STR+1]= {0};
double val;
float f[3];
@@ -477,12 +477,14 @@
if(mode=='v') {
/* extract first line from clipboard in case of multi-line copies */
char *p = getClipboard(0);
- int i = 0;
- while (*p && *p!='\r' && *p!='\n' && i<UI_MAX_DRAW_STR) {
- buf[i++]=*p;
- p++;
+ if(p) {
+ int i = 0;
+ while (*p && *p!='\r' && *p!='\n' && i<UI_MAX_DRAW_STR) {
+ buf[i++]=*p;
+ p++;
+ }
+ buf[i]= 0;
}
- buf[i]= 0;
}
/* numeric value */
@@ -1804,38 +1806,40 @@
((G.qual & LR_COMMANDKEY) || (G.qual & LR_CTRLKEY)) &&
((dev==XKEY) || (dev==CKEY) || (dev==VKEY)) ) {
- char buf[UI_MAX_DRAW_STR];
+ char buf[UI_MAX_DRAW_STR]={0};
/* paste */
if (dev==VKEY) {
/* extract the first line from the clipboard */
char *p = getClipboard(0);
- int i = 0;
- while (*p && *p!='\r' && *p!='\n' && i<UI_MAX_DRAW_STR) {
- buf[i++]=*p;
- p++;
- }
- buf[i]= 0;
+ if(p) {
+ int i = 0;
+ while (*p && *p!='\r' && *p!='\n' && i<UI_MAX_DRAW_STR) {
+ buf[i++]=*p;
+ p++;
+ }
+ buf[i]= 0;
- /* paste over the current selection */
- if ((but->selend - but->selsta) > 0) {
- len -= ui_delete_selection_edittext(but);
- }
-
- for (y=0; y<strlen(buf); y++)
- {
- /* add contents of buffer */
- if(len < but->max) {
- for(x= but->max; x>but->pos; x--)
- str[x]= str[x-1];
- str[but->pos]= buf[y];
- but->pos++;
- len++;
- str[len]= '\0';
+ /* paste over the current selection */
+ if ((but->selend - but->selsta) > 0) {
+ len -= ui_delete_selection_edittext(but);
}
+
+ for (y=0; y<strlen(buf); y++)
+ {
+ /* add contents of buffer */
+ if(len < but->max) {
+ for(x= but->max; x>but->pos; x--)
+ str[x]= str[x-1];
+ str[but->pos]= buf[y];
+ but->pos++;
+ len++;
+ str[len]= '\0';
+ }
+ }
+ if (strlen(buf) > 0) dodraw= 1;
}
- if (strlen(buf) > 0) dodraw= 1;
}
/* cut & copy */
else if ( (dev==XKEY) || (dev==CKEY) ) {
More information about the Bf-blender-cvs
mailing list