Index: stk500v2.c --- stk500v2.c.orig +++ stk500v2.c @@ -350,6 +350,7 @@ static void stk500v2_jtag3_setup(PROGRAMMER * pgm) void stk500v2_teardown(PROGRAMMER * pgm) { free(pgm->cookie); + pgm->cookie = NULL; } static void stk500v2_jtagmkII_teardown(PROGRAMMER * pgm) @@ -361,6 +362,7 @@ static void stk500v2_jtagmkII_teardown(PROGRAMMER * pg jtagmkII_teardown(pgm); free(mycookie); + pgm->cookie = NULL; } static void stk500v2_jtag3_teardown(PROGRAMMER * pgm) @@ -1477,6 +1479,8 @@ static int stk500hv_initialize(PROGRAMMER * pgm, AVRPA } free(PDATA(pgm)->flash_pagecache); free(PDATA(pgm)->eeprom_pagecache); + PDATA(pgm)->flash_pagecache = NULL; + PDATA(pgm)->eeprom_pagecache = NULL; if ((PDATA(pgm)->flash_pagecache = malloc(PDATA(pgm)->flash_pagesize)) == NULL) { avrdude_message(MSG_INFO, "%s: stk500hv_initialize(): Out of memory\n", progname); @@ -1486,6 +1490,7 @@ static int stk500hv_initialize(PROGRAMMER * pgm, AVRPA avrdude_message(MSG_INFO, "%s: stk500hv_initialize(): Out of memory\n", progname); free(PDATA(pgm)->flash_pagecache); + PDATA(pgm)->flash_pagecache = NULL; return -1; } PDATA(pgm)->flash_pageaddr = PDATA(pgm)->eeprom_pageaddr = (unsigned long)-1L;