From b948d9928c6076fda69c46d18fe3a2dbc2c8994f Mon Sep 17 00:00:00 2001 From: Harald Oehlmann Date: Tue, 18 Aug 2015 14:27:37 +0200 Subject: [PATCH] Fixed wrong use of _alloca which causes crashes on Windows --- backend/render.c | 42 +++++++++--------------------------------- 1 file changed, 9 insertions(+), 33 deletions(-) diff --git a/backend/render.c b/backend/render.c index fd099853..c7434b0d 100644 --- a/backend/render.c +++ b/backend/render.c @@ -81,11 +81,7 @@ int render_plot(struct zint_symbol *symbol, float width, float height) int upceanflag = 0; // Allocate memory for the rendered version -#ifndef _MSC_VER - render = symbol->rendered = malloc(sizeof(struct zint_render)); -#else - render = symbol->rendered = (struct zint_render *)_alloca(sizeof(struct zint_render)); -#endif + render = symbol->rendered = (struct zint_render *) malloc(sizeof(struct zint_render)); render->lines = NULL; render->strings = NULL; render->rings = NULL; @@ -101,7 +97,7 @@ int render_plot(struct zint_symbol *symbol, float width, float height) symbol_lead_in = 0; addon_text_posn = 0.0; addon_width_x = 0; - + /* * Determine if there will be any addon texts and text height */ @@ -474,7 +470,7 @@ int render_plot(struct zint_symbol *symbol, float width, float height) } } - + if(upceanflag == 13) { /* guard bar extensions and text formatting for EAN-13 */ i = 0; @@ -566,7 +562,7 @@ int render_plot(struct zint_symbol *symbol, float width, float height) render_plot_add_string(symbol, (unsigned char *) textpart, (textpos + xoffset) * scaler, default_text_posn, 11.0 * scaler, textwidth * scaler, &last_string); textpart[0] = symbol->text[11]; textpart[1] = '\0'; - textpos = 100; + textpos = 100; textwidth = 6.2; render_plot_add_string(symbol, (unsigned char *) textpart, (textpos + xoffset) * scaler, default_text_posn + (2.0 * scaler), 8.0 * scaler, textwidth * scaler, &last_string); textdone = 1; @@ -686,11 +682,7 @@ struct zint_render_line *render_plot_create_line(float x, float y, float width, { struct zint_render_line *line; -#ifndef _MSC_VER - line = malloc(sizeof(struct zint_render_line)); -#else - line = (struct zint_render_line *)_alloca(sizeof(struct zint_render_line)); -#endif + line = (struct zint_render_line*) malloc(sizeof(struct zint_render_line)); line->next = NULL; line->x = x; line->y = y; @@ -719,11 +711,7 @@ struct zint_render_ring *render_plot_create_ring(float x, float y, float radius, { struct zint_render_ring *ring; -#ifndef _MSC_VER - ring = malloc(sizeof(struct zint_render_ring)); -#else - ring = (struct zint_render_ring *)_alloca(sizeof(struct zint_render_ring)); -#endif + ring = (struct zint_render_ring *) malloc(sizeof(struct zint_render_ring)); ring->next = NULL; ring->x = x; ring->y = y; @@ -748,11 +736,7 @@ struct zint_render_hexagon *render_plot_create_hexagon(float x, float y) { struct zint_render_hexagon *hexagon; -#ifndef _MSC_VER - hexagon = malloc(sizeof(struct zint_render_hexagon)); -#else - hexagon = (struct zint_render_hexagon *)_alloca(sizeof(struct zint_render_hexagon)); -#endif + hexagon = (struct zint_render_hexagon*) malloc(sizeof(struct zint_render_hexagon)); hexagon->next = NULL; hexagon->x = x; hexagon->y = y; @@ -781,22 +765,14 @@ int render_plot_add_string(struct zint_symbol *symbol, { struct zint_render_string *string; -#ifndef _MSC_VER - string = malloc(sizeof(struct zint_render_string)); -#else - string = (struct zint_render_string *)_alloca(sizeof(struct zint_render_string)); -#endif + string = (struct zint_render_string*) malloc(sizeof(struct zint_render_string)); string->next = NULL; string->x = x; string->y = y; string->width = width; string->fsize = fsize; string->length = ustrlen(text); -#ifndef _MSC_VER - string->text = malloc(sizeof(unsigned char) * (ustrlen(text) + 1)); -#else - string->text = (unsigned char *)_alloca((ustrlen(text) + 1) * sizeof(unsigned char)); -#endif + string->text = (unsigned char*) malloc(sizeof(unsigned char) * (ustrlen(text) + 1)); ustrcpy(string->text, text); if (*last_string)