diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-01-08 06:20:05 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-01-08 06:20:05 +0400 |
commit | d7e6d021615adcd0bf1d6f4d0c52f75ab34a6584 (patch) | |
tree | e12f406e0ace347bf2951bd2a432c87e19a01b2d /source/blender/blenkernel/intern/fmodifier.c | |
parent | 682df047a0005435fb8caad3dba974eb6eca2232 (diff) |
simplify fcm_generator_verify() using MEM_recallocN
Diffstat (limited to 'source/blender/blenkernel/intern/fmodifier.c')
-rw-r--r-- | source/blender/blenkernel/intern/fmodifier.c | 53 |
1 files changed, 16 insertions, 37 deletions
diff --git a/source/blender/blenkernel/intern/fmodifier.c b/source/blender/blenkernel/intern/fmodifier.c index 47397a60b20..7b007af86d6 100644 --- a/source/blender/blenkernel/intern/fmodifier.c +++ b/source/blender/blenkernel/intern/fmodifier.c @@ -141,55 +141,34 @@ static void fcm_generator_verify(FModifier *fcm) switch (data->mode) { case FCM_GENERATOR_POLYNOMIAL: /* expanded polynomial expression */ { + const int arraysize_new = data->poly_order + 1; /* arraysize needs to be order+1, so resize if not */ - if (data->arraysize != (data->poly_order + 1)) { - float *nc; - - /* make new coefficients array, and copy over as much data as can fit */ - nc = MEM_callocN(sizeof(float) * (data->poly_order + 1), "FMod_Generator_Coefs"); - + if (data->arraysize != arraysize_new) { if (data->coefficients) { - if ((int)data->arraysize > (data->poly_order + 1)) - memcpy(nc, data->coefficients, sizeof(float) * (data->poly_order + 1)); - else - memcpy(nc, data->coefficients, sizeof(float) * data->arraysize); - - /* free the old data */ - MEM_freeN(data->coefficients); + data->coefficients = MEM_recallocN(data->coefficients, sizeof(float) * arraysize_new); } - - /* set the new data */ - data->coefficients = nc; - data->arraysize = data->poly_order + 1; + else { + data->coefficients = MEM_callocN(sizeof(float) * arraysize_new, "FMod_Generator_Coefs"); + } + data->arraysize = arraysize_new; } + break; } - break; - case FCM_GENERATOR_POLYNOMIAL_FACTORISED: /* expanded polynomial expression */ { + const int arraysize_new = data->poly_order * 2; /* arraysize needs to be (2 * order), so resize if not */ - if (data->arraysize != (data->poly_order * 2)) { - float *nc; - - /* make new coefficients array, and copy over as much data as can fit */ - nc = MEM_callocN(sizeof(float) * (data->poly_order * 2), "FMod_Generator_Coefs"); - + if (data->arraysize != arraysize_new) { if (data->coefficients) { - if (data->arraysize > (unsigned int)(data->poly_order * 2)) - memcpy(nc, data->coefficients, sizeof(float) * (data->poly_order * 2)); - else - memcpy(nc, data->coefficients, sizeof(float) * data->arraysize); - - /* free the old data */ - MEM_freeN(data->coefficients); + data->coefficients = MEM_recallocN(data->coefficients, sizeof(float) * arraysize_new); } - - /* set the new data */ - data->coefficients = nc; - data->arraysize = data->poly_order * 2; + else { + data->coefficients = MEM_callocN(sizeof(float) * arraysize_new, "FMod_Generator_Coefs"); + } + data->arraysize = arraysize_new; } + break; } - break; } } |