)]}'
{"flashprog.c":[{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"4fab25b248a927cc1d9acad83b80a1524c973ecb","unresolved":true,"context_lines":[{"line_number":155,"context_line":"\t\t}"},{"line_number":156,"context_line":"\t}"},{"line_number":157,"context_line":"\tprogrammer_param \u003d NULL;"},{"line_number":158,"context_line":"\tfree(prog-\u003eparam);"},{"line_number":159,"context_line":"\treturn ret;"},{"line_number":160,"context_line":"}"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"b8b9ae39_36a1b8e7","line":158,"updated":"2026-08-10 14:40:51.000000000","message":"Technically, we could do it here, but this function didn\u0027t set `prog-\u003eparam` so it\u0027s\nnot really in charge of it. It\u0027s allocated in flashprog_programmer_init() so for\nsymmetry we could free it in flashprog_programmer_shutdown()?\n\nThis would free the more internal code here from knowledge about when `-\u003eparam` is\navailable (by default one might assume it\u0027s available as long as `prog` exists).\n\n(Some context about the mess, libflashprog came later and tries to hide some of the\ntechnical debt. If things can be handled gracefully in the libflashprog APIs, we\nshould do it there to slowly/incrementally get rid of the old hacks.)","commit_id":"adfaa68f0c1037de6dbbe7a5ac482aa1d7a05345"},{"author":{"_account_id":1000033,"name":"Lukas Selinka","email":"lukas.selinka@secunet.com","username":"314","avatars":[{"url":"https://www.gravatar.com/avatar/36b7e1fb96a7545b265d93be97ace3ca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/36b7e1fb96a7545b265d93be97ace3ca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/36b7e1fb96a7545b265d93be97ace3ca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/36b7e1fb96a7545b265d93be97ace3ca.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"a1c31171dd760565b3adb878e107a989cb368719","unresolved":false,"context_lines":[{"line_number":155,"context_line":"\t\t}"},{"line_number":156,"context_line":"\t}"},{"line_number":157,"context_line":"\tprogrammer_param \u003d NULL;"},{"line_number":158,"context_line":"\tfree(prog-\u003eparam);"},{"line_number":159,"context_line":"\treturn ret;"},{"line_number":160,"context_line":"}"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"90772e46_896d5743","line":158,"in_reply_to":"b8b9ae39_36a1b8e7","updated":"2026-08-10 15:34:56.000000000","message":"That makes sense, done.","commit_id":"adfaa68f0c1037de6dbbe7a5ac482aa1d7a05345"}],"libflashprog.c":[{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"f95e3b153e3517817d551852963220d6703a3fad","unresolved":false,"context_lines":[{"line_number":178,"context_line":"\tif (programmer_shutdown(flashprog))"},{"line_number":179,"context_line":"\t\treturn 1;"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"\tif (flashprog-\u003eparam)"},{"line_number":182,"context_line":"\t\tfree(flashprog-\u003eparam);"},{"line_number":183,"context_line":"\tfree(flashprog);"},{"line_number":184,"context_line":"\treturn 0;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"2a8db9a6_97aae81b","line":181,"updated":"2026-08-10 15:56:13.000000000","message":"Nit, the check is done sometimes, but `free(NULL)` is allowed, so we usually omit the check.","commit_id":"aa71cfec1bbe167a9458ae3d8c8fbc7ce8441665"}]}
