fix for minor memory leak for BMO_VInitOpf() in an error case, also use the BLI versi...
authorCampbell Barton <ideasman42@gmail.com>
Mon, 28 Nov 2011 05:00:34 +0000 (05:00 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Mon, 28 Nov 2011 05:00:34 +0000 (05:00 +0000)
source/blender/bmesh/intern/bmesh_operators.c

index 7c731f8aa5693af8007aa7a3df51d8113abc3a14..8d1d92ce6306a34e033f085823730f71745fb5d6 100644 (file)
@@ -1126,14 +1126,14 @@ int BMO_VInitOpf(BMesh *bm, BMOperator *op, const char *_fmt, va_list vlist)
        int noslot=0;
 
        /*we muck around in here, so dup it*/
-       fmt = ofmt = strdup(fmt);
+       fmt = ofmt = BLI_strdup(fmt);
        
        /*find operator name*/
        i = strcspn(fmt, " \t");
 
        opname = fmt;
        if (!opname[i]) noslot = 1;
-       opname[i] = 0;
+       opname[i] = '\0';
 
        fmt += i + (noslot ? 0 : 1);
        
@@ -1141,8 +1141,11 @@ int BMO_VInitOpf(BMesh *bm, BMOperator *op, const char *_fmt, va_list vlist)
                if (!strcmp(opname, opdefines[i]->name)) break;
        }
 
-       if (i == bmesh_total_ops) return 0;
-       
+       if (i == bmesh_total_ops) {
+               MEM_freeN(ofmt);
+               return 0;
+       }
+
        BMO_Init_Op(bm, op, opname);
        def = opdefines[i];
        
@@ -1272,7 +1275,7 @@ int BMO_VInitOpf(BMesh *bm, BMOperator *op, const char *_fmt, va_list vlist)
                fmt++;
        }
 
-       free(ofmt);
+       MEM_freeN(ofmt);
        return 1;
 error:
        BMO_Finish_Op(bm, op);