Revision: 15544
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15544
Author:   aligorith
Date:     2008-07-12 08:44:57 +0200 (Sat, 12 Jul 2008)

Log Message:
-----------
Bugfix #17318: PoseLib: Crash while searching for pose typing in letter i then 
backspace

When searching failed to find any matches, the pointer to a matching pose was 
cleared. However, it wasn't reset upon clearing the invalid search-string, so a 
crash occurred.

Modified Paths:
--------------
    trunk/blender/source/blender/src/poselib.c

Modified: trunk/blender/source/blender/src/poselib.c
===================================================================
--- trunk/blender/source/blender/src/poselib.c  2008-07-12 06:18:06 UTC (rev 
15543)
+++ trunk/blender/source/blender/src/poselib.c  2008-07-12 06:44:57 UTC (rev 
15544)
@@ -756,6 +756,13 @@
  */
 static void poselib_preview_get_next (tPoseLib_PreviewData *pld, int step)
 {
+       /* check if we no longer have search-string, but don't have any marker 
*/
+       if (pld->marker == NULL) {
+               if ((step) && (pld->searchstr[0] == 0))
+                       pld->marker= pld->act->markers.first;
+       }       
+       
+       /* the following operations assume that there is a starting point and 
direction */
        if ((pld->marker) && (step)) {
                /* search-string dictates a special approach */
                if (pld->searchstr[0]) {
@@ -1262,9 +1269,14 @@
                                        /* get search-string */
                                        index= pld.search_cursor;
                                        
-                                       memcpy(&tempstr[0], &pld.searchstr[0], 
index);
-                                       tempstr[index]= '|';
-                                       memcpy(&tempstr[index+1], 
&pld.searchstr[index], 64-index);
+                                       if (IN_RANGE(index, 0, 64)) {
+                                               memcpy(&tempstr[0], 
&pld.searchstr[0], index);
+                                               tempstr[index]= '|';
+                                               memcpy(&tempstr[index+1], 
&pld.searchstr[index], 64-index);
+                                       }
+                                       else {
+                                               strncpy(tempstr, pld.searchstr, 
64);
+                                       }
                                        
                                        /* get marker name */
                                        if (pld.marker)


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to