mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Free the char 'code' in gnc-flicker-gui.c
Change flicker_data to return a guint so that the char code can be freed in the function and also change to using g_strdup_printf.
This commit is contained in:
@@ -46,7 +46,7 @@
|
||||
#define MARGIN 12 /* Distance between the flicker bars */
|
||||
#define DELAY 50 /* Pause between the flickering painting */
|
||||
|
||||
static char *flicker_data (char const *challenge);
|
||||
static guint flicker_data (char const *challenge);
|
||||
static gboolean time_handler (GtkWidget *widget);
|
||||
static void do_marker_drawing (cairo_t *cr);
|
||||
static void draw_bit (cairo_t *cr, _Bool bit, int i);
|
||||
@@ -114,8 +114,8 @@ get_num (const char ch)
|
||||
}
|
||||
|
||||
/* convert the bank challenge into the 5 bits for the flicker data */
|
||||
static char
|
||||
*flicker_data (const char *challenge)
|
||||
static guint
|
||||
flicker_data (const char *challenge)
|
||||
{
|
||||
/* bitfield is a clock bit and a 4-bit code with the bits reversed
|
||||
(bit 1 is the least significant and bit 4 the most
|
||||
@@ -128,16 +128,13 @@ static char
|
||||
{0, 0, 0, 1, 1}, {0, 1, 0, 1, 1}, {0, 0, 1, 1, 1}, {0, 1, 1, 1, 1}
|
||||
};
|
||||
|
||||
/* prepend synchronization identifier */
|
||||
const char pre[] = {'0', 'F', 'F', 'F'};
|
||||
size_t len = sizeof (pre) + strlen (challenge) + 1;
|
||||
char* code = (char*)g_malloc0 (len);
|
||||
memcpy (code, pre, sizeof (pre));
|
||||
memcpy (code + sizeof (pre), challenge, strlen (challenge));
|
||||
/* prepend synchronization identifier */
|
||||
char* code = g_strdup_printf ("0FFF%s", challenge);
|
||||
guint challenge_length = strlen (code);
|
||||
|
||||
/* Swap the position of the bits in pairs throughout the bank challenge
|
||||
(low-order nibble first). */
|
||||
for (guint i = 0; i < len - 1; i += 2)
|
||||
for (guint i = 0; i < challenge_length; i += 2)
|
||||
{
|
||||
guint val1 = get_num (code[i]);
|
||||
guint val2 = get_num (code[i+1]);
|
||||
@@ -145,7 +142,9 @@ static char
|
||||
memcpy (&bitarray[i], bits[val2], sizeof(bits[val2]));
|
||||
memcpy (&bitarray[i+1], bits[val1], sizeof(bits[val1]));
|
||||
}
|
||||
return code;
|
||||
g_free (code);
|
||||
|
||||
return challenge_length;
|
||||
}
|
||||
|
||||
/* A timer for redrawing the flickering painting, is started here and
|
||||
@@ -306,9 +305,7 @@ do_flicker_store_state (GtkWidget *dialog)
|
||||
static void
|
||||
on_flicker_challenge_map (GtkWidget *widget)
|
||||
{
|
||||
gchar *code = g_malloc0 (strlen (flickerdraw.challenge) + 4);
|
||||
code = flicker_data (flickerdraw.challenge);
|
||||
flickerdraw.challenge_length = strlen (code);
|
||||
flickerdraw.challenge_length = flicker_data (flickerdraw.challenge);
|
||||
|
||||
/* Set the height of the drawing area */
|
||||
flickerdraw.height = flickerdraw.barheight + 2 * flickerdraw.y_barpos;
|
||||
|
||||
Reference in New Issue
Block a user