)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"acb89d7c66208e57fb8b1e02ff5f1d3587bbeb79","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"9bdfabb5_34bd90ef","updated":"2021-09-22 09:39:51.000000000","message":"Merge?","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"867e804433d0dc1cb5d735f989ca852e3ee0cbc6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"905d55c5_70874edc","updated":"2022-02-23 16:09:01.000000000","message":"Thanks for the review Antonio!","commit_id":"a2e8cf4ac705e4443e4e63da326ccb94eb3bdfd9"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"fa3cbb10cdda5e96f208ca99d7bceafc7635babd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"20693837_98ef63a5","updated":"2022-02-24 15:21:25.000000000","message":"Cool! Just a problem with jimtcl ref-counter that needs to be addressed, then looks ok for me","commit_id":"adcbbbd7dc73c2cf10d36dd9f1b591152fd7dafc"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"3ce9594dd798cedfbc6e4e8ddc606c0824376585","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d744a353_9667d11c","updated":"2022-03-05 13:10:03.000000000","message":"For jimtcl maintainer mode, please check https://review.openocd.org/6871/","commit_id":"adcbbbd7dc73c2cf10d36dd9f1b591152fd7dafc"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4cd15e6b5604c7b1f3fa2161593ac56cea5bbb87","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"0c90cd98_e796d1bb","updated":"2022-03-05 21:12:12.000000000","message":"thanks!","commit_id":"884eaa62dc5b21b6d76e33481bfdf166009a4c46"}],"doc/openocd.texi":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7bbaed718ae10f9e1ec66cc19a99dcb7c42e787c","unresolved":true,"context_lines":[{"line_number":4872,"context_line":"@end example"},{"line_number":4873,"context_line":"@end deffn"},{"line_number":4874,"context_line":""},{"line_number":4875,"context_line":"@deffn {Command} {$target_name write_memory} aiddress width data [\u0027phys\u0027]"},{"line_number":4876,"context_line":"This function provides an efficient way to write to the target memory from a Tcl"},{"line_number":4877,"context_line":"script."},{"line_number":4878,"context_line":""}],"source_content_type":"text/x-texinfo","patch_set":5,"id":"9907546b_4f33d951","line":4875,"updated":"2022-02-16 09:56:23.000000000","message":"typo s/aiddress/address/","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"867e804433d0dc1cb5d735f989ca852e3ee0cbc6","unresolved":false,"context_lines":[{"line_number":4872,"context_line":"@end example"},{"line_number":4873,"context_line":"@end deffn"},{"line_number":4874,"context_line":""},{"line_number":4875,"context_line":"@deffn {Command} {$target_name write_memory} aiddress width data [\u0027phys\u0027]"},{"line_number":4876,"context_line":"This function provides an efficient way to write to the target memory from a Tcl"},{"line_number":4877,"context_line":"script."},{"line_number":4878,"context_line":""}],"source_content_type":"text/x-texinfo","patch_set":5,"id":"03df6795_c8cd44b4","line":4875,"in_reply_to":"9907546b_4f33d951","updated":"2022-02-23 16:09:01.000000000","message":"Done","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7bbaed718ae10f9e1ec66cc19a99dcb7c42e787c","unresolved":true,"context_lines":[{"line_number":11260,"context_line":""},{"line_number":11261,"context_line":"@item @b{write_memory} \u003c@var{address}\u003e \u003c@var{width}\u003e \u003c@var{data}\u003e [\u0027phys\u0027]"},{"line_number":11262,"context_line":""},{"line_number":11263,"context_line":"Write a Tcl list of numbers to memory."},{"line_number":11264,"context_line":"@item @b{mem2array} \u003c@var{varname}\u003e \u003c@var{width}\u003e \u003c@var{addr}\u003e \u003c@var{nelems}\u003e"},{"line_number":11265,"context_line":""},{"line_number":11266,"context_line":"Read memory and return as a Tcl array for script processing"}],"source_content_type":"text/x-texinfo","patch_set":5,"id":"7046fbb3_8f652df3","line":11263,"updated":"2022-02-16 09:56:23.000000000","message":"same comment as in 5313, this is probably better placed in section \"Target State handling\" together with {reg}","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"867e804433d0dc1cb5d735f989ca852e3ee0cbc6","unresolved":false,"context_lines":[{"line_number":11260,"context_line":""},{"line_number":11261,"context_line":"@item @b{write_memory} \u003c@var{address}\u003e \u003c@var{width}\u003e \u003c@var{data}\u003e [\u0027phys\u0027]"},{"line_number":11262,"context_line":""},{"line_number":11263,"context_line":"Write a Tcl list of numbers to memory."},{"line_number":11264,"context_line":"@item @b{mem2array} \u003c@var{varname}\u003e \u003c@var{width}\u003e \u003c@var{addr}\u003e \u003c@var{nelems}\u003e"},{"line_number":11265,"context_line":""},{"line_number":11266,"context_line":"Read memory and return as a Tcl array for script processing"}],"source_content_type":"text/x-texinfo","patch_set":5,"id":"0c33eb21_423853f2","line":11263,"in_reply_to":"7046fbb3_8f652df3","updated":"2022-02-23 16:09:01.000000000","message":"Done","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"}],"src/target/target.c":[{"author":{"_account_id":1001667,"name":"Jan Matyas","email":"jan.matyas@codasip.com","username":"JanMatCodasip"},"change_message_id":"f61970d7cdec988ce981a355f2b253ae71d0d10d","unresolved":false,"context_lines":[{"line_number":4598,"context_line":""},{"line_number":4599,"context_line":"\tsize_t count \u003d l;"},{"line_number":4600,"context_line":""},{"line_number":4601,"context_line":"\t/* Arg 4: Optional \u0027phys\u0027. */"},{"line_number":4602,"context_line":"\tbool is_phys \u003d false;"},{"line_number":4603,"context_line":""},{"line_number":4604,"context_line":"\tif (argc \u003e 3) {"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"aedf27f1_4eb186db","line":4601,"updated":"2021-06-08 05:27:23.000000000","message":"This should be \"Arg 3\"","commit_id":"c10d4a596496b4072a7d297e5c93f8c1ad75bb3a"},{"author":{"_account_id":1001667,"name":"Jan Matyas","email":"jan.matyas@codasip.com","username":"JanMatCodasip"},"change_message_id":"f61970d7cdec988ce981a355f2b253ae71d0d10d","unresolved":false,"context_lines":[{"line_number":4943,"context_line":"\t/*"},{"line_number":4944,"context_line":"\t * argv[0] \u003d memory address"},{"line_number":4945,"context_line":"\t * argv[1] \u003d desired element width in bits"},{"line_number":4946,"context_line":"\t * argv[2] \u003d number of elements to write"},{"line_number":4947,"context_line":"\t * argv[3] \u003d optional \"phys\""},{"line_number":4948,"context_line":"\t */"},{"line_number":4949,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"aedf27f1_eec5da42","line":4946,"updated":"2021-06-08 05:27:23.000000000","message":"This should be: list of data to write","commit_id":"c10d4a596496b4072a7d297e5c93f8c1ad75bb3a"},{"author":{"_account_id":1001667,"name":"Jan Matyas","email":"jan.matyas@codasip.com","username":"JanMatCodasip"},"change_message_id":"f61970d7cdec988ce981a355f2b253ae71d0d10d","unresolved":false,"context_lines":[{"line_number":4991,"context_line":"\tcase 64:"},{"line_number":4992,"context_line":"\t\tbreak;"},{"line_number":4993,"context_line":"\tdefault:"},{"line_number":4994,"context_line":"\t\tJim_SetResultString(interp, \"Invalid width param, must be 8/16/32\", -1);"},{"line_number":4995,"context_line":"\t\treturn JIM_ERR;"},{"line_number":4996,"context_line":"\t}"},{"line_number":4997,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"aedf27f1_0ec37e3e","line":4994,"updated":"2021-06-08 05:27:23.000000000","message":"Typo: Mising the value 64","commit_id":"c10d4a596496b4072a7d297e5c93f8c1ad75bb3a"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7bbaed718ae10f9e1ec66cc19a99dcb7c42e787c","unresolved":true,"context_lines":[{"line_number":4626,"context_line":"\t\t} else {"},{"line_number":4627,"context_line":"\t\t\tJim_SetResultFormatted(interp, \"invalid argument \u0027%s\u0027, must be \u0027phys\u0027\", phys);"},{"line_number":4628,"context_line":"\t\t\treturn JIM_ERR;"},{"line_number":4629,"context_line":"\t\t}"},{"line_number":4630,"context_line":"\t}"},{"line_number":4631,"context_line":""},{"line_number":4632,"context_line":"\tswitch (width_bits) {"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"08508176_ba48f918","line":4629,"updated":"2022-02-16 09:56:23.000000000","message":"one branch of the if/then/else has a return, so can be simplified as:\nif (strcmp(phys, \"phys\")) {\n  Jim_SetResultFormatted(..);\n  return JIM_ERR;\n}\nis_phys \u003d true;","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"867e804433d0dc1cb5d735f989ca852e3ee0cbc6","unresolved":true,"context_lines":[{"line_number":4626,"context_line":"\t\t} else {"},{"line_number":4627,"context_line":"\t\t\tJim_SetResultFormatted(interp, \"invalid argument \u0027%s\u0027, must be \u0027phys\u0027\", phys);"},{"line_number":4628,"context_line":"\t\t\treturn JIM_ERR;"},{"line_number":4629,"context_line":"\t\t}"},{"line_number":4630,"context_line":"\t}"},{"line_number":4631,"context_line":""},{"line_number":4632,"context_line":"\tswitch (width_bits) {"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"96f3b3ec_0a691ea8","line":4629,"in_reply_to":"08508176_ba48f918","updated":"2022-02-23 16:09:01.000000000","message":"Yep, makes sense","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"07c1cef9b17c8af4cc4e973638442e345a3006af","unresolved":false,"context_lines":[{"line_number":4626,"context_line":"\t\t} else {"},{"line_number":4627,"context_line":"\t\t\tJim_SetResultFormatted(interp, \"invalid argument \u0027%s\u0027, must be \u0027phys\u0027\", phys);"},{"line_number":4628,"context_line":"\t\t\treturn JIM_ERR;"},{"line_number":4629,"context_line":"\t\t}"},{"line_number":4630,"context_line":"\t}"},{"line_number":4631,"context_line":""},{"line_number":4632,"context_line":"\tswitch (width_bits) {"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"66cfc5ca_62de13c8","line":4629,"in_reply_to":"96f3b3ec_0a691ea8","updated":"2022-03-05 20:04:26.000000000","message":"Done","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7bbaed718ae10f9e1ec66cc19a99dcb7c42e787c","unresolved":true,"context_lines":[{"line_number":4664,"context_line":"\t\t\taddr, width);"},{"line_number":4665,"context_line":"\t\tJim_AppendStrings(interp, Jim_GetResult(interp), buf, NULL);"},{"line_number":4666,"context_line":"\t\treturn JIM_ERR;"},{"line_number":4667,"context_line":"\t}"},{"line_number":4668,"context_line":""},{"line_number":4669,"context_line":"\tconst size_t buffersize \u003d 4096;"},{"line_number":4670,"context_line":"\tuint8_t *buffer \u003d malloc(buffersize);"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"9baedc45_f94fbd1e","line":4667,"updated":"2022-02-16 09:56:23.000000000","message":"some target accepts unaligned read/write, while most of them refuse it.\nI would prefer we rely on the alignment check done inside target_read_memory()/target_read_phys_memory(), instead of denying here the unaligned access.\nBy the way, the check could have been written as:\nif (!IS_ALIGNED(address, width))","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"07c1cef9b17c8af4cc4e973638442e345a3006af","unresolved":false,"context_lines":[{"line_number":4664,"context_line":"\t\t\taddr, width);"},{"line_number":4665,"context_line":"\t\tJim_AppendStrings(interp, Jim_GetResult(interp), buf, NULL);"},{"line_number":4666,"context_line":"\t\treturn JIM_ERR;"},{"line_number":4667,"context_line":"\t}"},{"line_number":4668,"context_line":""},{"line_number":4669,"context_line":"\tconst size_t buffersize \u003d 4096;"},{"line_number":4670,"context_line":"\tuint8_t *buffer \u003d malloc(buffersize);"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"ec70c5fa_4de3b393","line":4667,"in_reply_to":"5f47166c_d7ed8898","updated":"2022-03-05 20:04:26.000000000","message":"Done","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"867e804433d0dc1cb5d735f989ca852e3ee0cbc6","unresolved":true,"context_lines":[{"line_number":4664,"context_line":"\t\t\taddr, width);"},{"line_number":4665,"context_line":"\t\tJim_AppendStrings(interp, Jim_GetResult(interp), buf, NULL);"},{"line_number":4666,"context_line":"\t\treturn JIM_ERR;"},{"line_number":4667,"context_line":"\t}"},{"line_number":4668,"context_line":""},{"line_number":4669,"context_line":"\tconst size_t buffersize \u003d 4096;"},{"line_number":4670,"context_line":"\tuint8_t *buffer \u003d malloc(buffersize);"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"5f47166c_d7ed8898","line":4667,"in_reply_to":"9baedc45_f94fbd1e","updated":"2022-02-23 16:09:01.000000000","message":"Okay, makes sense","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7bbaed718ae10f9e1ec66cc19a99dcb7c42e787c","unresolved":true,"context_lines":[{"line_number":4693,"context_line":"\t\t\tJim_SetResultString(interp, \"read_memory: failed to read memory\", -1);"},{"line_number":4694,"context_line":"\t\t\te \u003d JIM_ERR;"},{"line_number":4695,"context_line":"\t\t\tbreak;"},{"line_number":4696,"context_line":"\t\t} else {"},{"line_number":4697,"context_line":"\t\t\tuint64_t v \u003d 0;"},{"line_number":4698,"context_line":""},{"line_number":4699,"context_line":"\t\t\tfor (size_t i \u003d 0; i \u003c chunk_len ; i++) {"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"02d6feb4_5dc6b566","line":4696,"updated":"2022-02-16 09:56:23.000000000","message":"remove the else and reduce the indentation of the following code","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"867e804433d0dc1cb5d735f989ca852e3ee0cbc6","unresolved":true,"context_lines":[{"line_number":4693,"context_line":"\t\t\tJim_SetResultString(interp, \"read_memory: failed to read memory\", -1);"},{"line_number":4694,"context_line":"\t\t\te \u003d JIM_ERR;"},{"line_number":4695,"context_line":"\t\t\tbreak;"},{"line_number":4696,"context_line":"\t\t} else {"},{"line_number":4697,"context_line":"\t\t\tuint64_t v \u003d 0;"},{"line_number":4698,"context_line":""},{"line_number":4699,"context_line":"\t\t\tfor (size_t i \u003d 0; i \u003c chunk_len ; i++) {"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"1af21d19_e3bc930b","line":4696,"in_reply_to":"02d6feb4_5dc6b566","updated":"2022-02-23 16:09:01.000000000","message":"Good catch","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"07c1cef9b17c8af4cc4e973638442e345a3006af","unresolved":false,"context_lines":[{"line_number":4693,"context_line":"\t\t\tJim_SetResultString(interp, \"read_memory: failed to read memory\", -1);"},{"line_number":4694,"context_line":"\t\t\te \u003d JIM_ERR;"},{"line_number":4695,"context_line":"\t\t\tbreak;"},{"line_number":4696,"context_line":"\t\t} else {"},{"line_number":4697,"context_line":"\t\t\tuint64_t v \u003d 0;"},{"line_number":4698,"context_line":""},{"line_number":4699,"context_line":"\t\t\tfor (size_t i \u003d 0; i \u003c chunk_len ; i++) {"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"77fa07eb_a4523d67","line":4696,"in_reply_to":"1af21d19_e3bc930b","updated":"2022-03-05 20:04:26.000000000","message":"Done","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7bbaed718ae10f9e1ec66cc19a99dcb7c42e787c","unresolved":true,"context_lines":[{"line_number":4708,"context_line":"\t\t\t\t\tv \u003d target_buffer_get_u16(target, \u0026buffer[i * width]);"},{"line_number":4709,"context_line":"\t\t\t\t\tbreak;"},{"line_number":4710,"context_line":"\t\t\t\tcase 1:"},{"line_number":4711,"context_line":"\t\t\t\t\tv \u003d buffer[i] \u0026 0x0ff;"},{"line_number":4712,"context_line":"\t\t\t\t\tbreak;"},{"line_number":4713,"context_line":"\t\t\t\t}"},{"line_number":4714,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3ba86dbb_df637435","line":4711,"updated":"2022-02-16 09:56:23.000000000","message":"no need for the mask; *buffer is uint8_t","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"867e804433d0dc1cb5d735f989ca852e3ee0cbc6","unresolved":false,"context_lines":[{"line_number":4708,"context_line":"\t\t\t\t\tv \u003d target_buffer_get_u16(target, \u0026buffer[i * width]);"},{"line_number":4709,"context_line":"\t\t\t\t\tbreak;"},{"line_number":4710,"context_line":"\t\t\t\tcase 1:"},{"line_number":4711,"context_line":"\t\t\t\t\tv \u003d buffer[i] \u0026 0x0ff;"},{"line_number":4712,"context_line":"\t\t\t\t\tbreak;"},{"line_number":4713,"context_line":"\t\t\t\t}"},{"line_number":4714,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"7a797b46_e1d0cd21","line":4711,"in_reply_to":"3ba86dbb_df637435","updated":"2022-02-23 16:09:01.000000000","message":"Done","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7bbaed718ae10f9e1ec66cc19a99dcb7c42e787c","unresolved":true,"context_lines":[{"line_number":4713,"context_line":"\t\t\t\t}"},{"line_number":4714,"context_line":""},{"line_number":4715,"context_line":"\t\t\t\tJim_ListAppendElement(interp, result_list,"},{"line_number":4716,"context_line":"\t\t\t\t\tJim_NewWideObj(interp, v));"},{"line_number":4717,"context_line":"\t\t\t}"},{"line_number":4718,"context_line":""},{"line_number":4719,"context_line":"\t\t\tcount -\u003d chunk_len;"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"1b03b170_5ade2e4f","line":4716,"updated":"2022-02-16 09:56:23.000000000","message":"Using Jim_NewWideObj() makes the value an integer, so the output of this command will be less readable by humans. Plus jim_wide is signed 64bits, giving negative values for 50% of the 64 bits elements.\nI prefer your solution in 5312 where you put hex strings in the output.","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"867e804433d0dc1cb5d735f989ca852e3ee0cbc6","unresolved":true,"context_lines":[{"line_number":4713,"context_line":"\t\t\t\t}"},{"line_number":4714,"context_line":""},{"line_number":4715,"context_line":"\t\t\t\tJim_ListAppendElement(interp, result_list,"},{"line_number":4716,"context_line":"\t\t\t\t\tJim_NewWideObj(interp, v));"},{"line_number":4717,"context_line":"\t\t\t}"},{"line_number":4718,"context_line":""},{"line_number":4719,"context_line":"\t\t\tcount -\u003d chunk_len;"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"f62dbf7e_869534d2","line":4716,"in_reply_to":"1b03b170_5ade2e4f","updated":"2022-02-23 16:09:01.000000000","message":"Yep, I agree","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"07c1cef9b17c8af4cc4e973638442e345a3006af","unresolved":false,"context_lines":[{"line_number":4713,"context_line":"\t\t\t\t}"},{"line_number":4714,"context_line":""},{"line_number":4715,"context_line":"\t\t\t\tJim_ListAppendElement(interp, result_list,"},{"line_number":4716,"context_line":"\t\t\t\t\tJim_NewWideObj(interp, v));"},{"line_number":4717,"context_line":"\t\t\t}"},{"line_number":4718,"context_line":""},{"line_number":4719,"context_line":"\t\t\tcount -\u003d chunk_len;"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"f0bb4b18_bde8e13b","line":4716,"in_reply_to":"f62dbf7e_869534d2","updated":"2022-03-05 20:04:26.000000000","message":"Done","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7bbaed718ae10f9e1ec66cc19a99dcb7c42e787c","unresolved":true,"context_lines":[{"line_number":5005,"context_line":"\t\t} else {"},{"line_number":5006,"context_line":"\t\t\tJim_SetResultFormatted(interp, \"invalid argument \u0027%s\u0027, must be \u0027phys\u0027\", phys);"},{"line_number":5007,"context_line":"\t\t\treturn JIM_ERR;"},{"line_number":5008,"context_line":"\t\t}"},{"line_number":5009,"context_line":"\t}"},{"line_number":5010,"context_line":""},{"line_number":5011,"context_line":"\tswitch (width_bits) {"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"275258df_bcd816e5","line":5008,"updated":"2022-02-16 09:56:23.000000000","message":"as per comment above","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"867e804433d0dc1cb5d735f989ca852e3ee0cbc6","unresolved":false,"context_lines":[{"line_number":5005,"context_line":"\t\t} else {"},{"line_number":5006,"context_line":"\t\t\tJim_SetResultFormatted(interp, \"invalid argument \u0027%s\u0027, must be \u0027phys\u0027\", phys);"},{"line_number":5007,"context_line":"\t\t\treturn JIM_ERR;"},{"line_number":5008,"context_line":"\t\t}"},{"line_number":5009,"context_line":"\t}"},{"line_number":5010,"context_line":""},{"line_number":5011,"context_line":"\tswitch (width_bits) {"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3dd0bd70_24812b4a","line":5008,"in_reply_to":"275258df_bcd816e5","updated":"2022-02-23 16:09:01.000000000","message":"Done","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7bbaed718ae10f9e1ec66cc19a99dcb7c42e787c","unresolved":true,"context_lines":[{"line_number":5043,"context_line":"\t\t\taddr, width);"},{"line_number":5044,"context_line":"\t\tJim_AppendStrings(interp, Jim_GetResult(interp), buf, NULL);"},{"line_number":5045,"context_line":"\t\treturn JIM_ERR;"},{"line_number":5046,"context_line":"\t}"},{"line_number":5047,"context_line":""},{"line_number":5048,"context_line":"\tconst size_t buffersize \u003d 4096;"},{"line_number":5049,"context_line":"\tuint8_t *buffer \u003d malloc(buffersize);"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"6c878a87_c5bbceb2","line":5046,"updated":"2022-02-16 09:56:23.000000000","message":"as per comment above","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"867e804433d0dc1cb5d735f989ca852e3ee0cbc6","unresolved":false,"context_lines":[{"line_number":5043,"context_line":"\t\t\taddr, width);"},{"line_number":5044,"context_line":"\t\tJim_AppendStrings(interp, Jim_GetResult(interp), buf, NULL);"},{"line_number":5045,"context_line":"\t\treturn JIM_ERR;"},{"line_number":5046,"context_line":"\t}"},{"line_number":5047,"context_line":""},{"line_number":5048,"context_line":"\tconst size_t buffersize \u003d 4096;"},{"line_number":5049,"context_line":"\tuint8_t *buffer \u003d malloc(buffersize);"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"f7410db4_7bb0ed0a","line":5046,"in_reply_to":"6c878a87_c5bbceb2","updated":"2022-02-23 16:09:01.000000000","message":"Done","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7bbaed718ae10f9e1ec66cc19a99dcb7c42e787c","unresolved":true,"context_lines":[{"line_number":5053,"context_line":"\t\treturn JIM_ERR;"},{"line_number":5054,"context_line":"\t}"},{"line_number":5055,"context_line":""},{"line_number":5056,"context_line":"\tJim_SetResult(interp, Jim_NewEmptyStringObj(interp));"},{"line_number":5057,"context_line":""},{"line_number":5058,"context_line":"\tsize_t j \u003d 0;"},{"line_number":5059,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"73de64d2_26df805c","line":5056,"updated":"2022-02-16 09:56:23.000000000","message":"Can be remove. jimtcl already calls Jim_SetEmptyResult(interp); before calling our command.","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"2fac469a162c0558aea7031880addf7e85280cfd","unresolved":false,"context_lines":[{"line_number":5053,"context_line":"\t\treturn JIM_ERR;"},{"line_number":5054,"context_line":"\t}"},{"line_number":5055,"context_line":""},{"line_number":5056,"context_line":"\tJim_SetResult(interp, Jim_NewEmptyStringObj(interp));"},{"line_number":5057,"context_line":""},{"line_number":5058,"context_line":"\tsize_t j \u003d 0;"},{"line_number":5059,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"e5c8c756_b1d71bf4","line":5056,"in_reply_to":"36c0df11_799bfe6b","updated":"2022-02-24 15:44:54.000000000","message":"By the way, I have checked for this. You first version of this patch is \"after\" my rework of commands, so it should not be that the reason.\nPlus I don\u0027t find the problem in the code, before my rework.\nMaybe you just copied this from some other command.","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"867e804433d0dc1cb5d735f989ca852e3ee0cbc6","unresolved":false,"context_lines":[{"line_number":5053,"context_line":"\t\treturn JIM_ERR;"},{"line_number":5054,"context_line":"\t}"},{"line_number":5055,"context_line":""},{"line_number":5056,"context_line":"\tJim_SetResult(interp, Jim_NewEmptyStringObj(interp));"},{"line_number":5057,"context_line":""},{"line_number":5058,"context_line":"\tsize_t j \u003d 0;"},{"line_number":5059,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"fb7adc2f_a6b15181","line":5056,"in_reply_to":"73de64d2_26df805c","updated":"2022-02-23 16:09:01.000000000","message":"Hm, is this behaviour new? I remember there was a problem without it in the beginning.. :-/","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"dafe6ac11d8a27f56b2d5f25f272e2b5d83ec939","unresolved":false,"context_lines":[{"line_number":5053,"context_line":"\t\treturn JIM_ERR;"},{"line_number":5054,"context_line":"\t}"},{"line_number":5055,"context_line":""},{"line_number":5056,"context_line":"\tJim_SetResult(interp, Jim_NewEmptyStringObj(interp));"},{"line_number":5057,"context_line":""},{"line_number":5058,"context_line":"\tsize_t j \u003d 0;"},{"line_number":5059,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"36c0df11_799bfe6b","line":5056,"in_reply_to":"8fe7683d_fccd4509","updated":"2022-02-24 14:20:26.000000000","message":"I don\u0027t see a regression after removing it, perhaps I misremember. Any other objections?","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"652554e12460b088fd4845ae48718006a2835abf","unresolved":false,"context_lines":[{"line_number":5053,"context_line":"\t\treturn JIM_ERR;"},{"line_number":5054,"context_line":"\t}"},{"line_number":5055,"context_line":""},{"line_number":5056,"context_line":"\tJim_SetResult(interp, Jim_NewEmptyStringObj(interp));"},{"line_number":5057,"context_line":""},{"line_number":5058,"context_line":"\tsize_t j \u003d 0;"},{"line_number":5059,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"8fe7683d_fccd4509","line":5056,"in_reply_to":"fb7adc2f_a6b15181","updated":"2022-02-23 16:31:32.000000000","message":"Hm, interesting reply. Actually I don\u0027t know!\nBefore my restructure of the way commands are called, there where 3 ways commands could be called: from jimtcl, from openocd jim_handler() and from openocd handler(). Maybe one or both of the latter two were broken.\nNow every command is called by jimtcl.\nI will have a look in git history if I can find something. Not only for curiosity but also to drop other similar code here and there.","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7bbaed718ae10f9e1ec66cc19a99dcb7c42e787c","unresolved":true,"context_lines":[{"line_number":5783,"context_line":"\treturn target_jim_write_memory(interp, get_current_target(cmd_ctx),"},{"line_number":5784,"context_line":"\t\targc, argv);"},{"line_number":5785,"context_line":"}"},{"line_number":5786,"context_line":""},{"line_number":5787,"context_line":"static int jim_target_tap_disabled(Jim_Interp *interp)"},{"line_number":5788,"context_line":"{"},{"line_number":5789,"context_line":"\tJim_SetResultFormatted(interp, \"[TAP is disabled]\");"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"7eff0195_4ceac827","line":5786,"updated":"2022-02-16 09:56:23.000000000","message":"same comment as in 5313, jim_{read,write}_memory() and jim_target_{read,write}_memory() are the same code.\nAvoid duplication and merge the resulting function with the called target_jim_{read,write}_memory()","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"867e804433d0dc1cb5d735f989ca852e3ee0cbc6","unresolved":false,"context_lines":[{"line_number":5783,"context_line":"\treturn target_jim_write_memory(interp, get_current_target(cmd_ctx),"},{"line_number":5784,"context_line":"\t\targc, argv);"},{"line_number":5785,"context_line":"}"},{"line_number":5786,"context_line":""},{"line_number":5787,"context_line":"static int jim_target_tap_disabled(Jim_Interp *interp)"},{"line_number":5788,"context_line":"{"},{"line_number":5789,"context_line":"\tJim_SetResultFormatted(interp, \"[TAP is disabled]\");"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"02b2133d_780c27ca","line":5786,"in_reply_to":"7eff0195_4ceac827","updated":"2022-02-23 16:09:01.000000000","message":"Done","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7bbaed718ae10f9e1ec66cc19a99dcb7c42e787c","unresolved":true,"context_lines":[{"line_number":6157,"context_line":"\t\t.name \u003d \"read_memory\","},{"line_number":6158,"context_line":"\t\t.mode \u003d COMMAND_EXEC,"},{"line_number":6159,"context_line":"\t\t.jim_handler \u003d jim_target_read_memory,"},{"line_number":6160,"context_line":"\t\t.help \u003d \"Load Tcl list of 8/16/32/64 bit numbers from target memory\","},{"line_number":6161,"context_line":"\t\t.usage \u003d \"address width count [\u0027phys\u0027]\","},{"line_number":6162,"context_line":"\t},"},{"line_number":6163,"context_line":"\t{"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"4bb8aa07_383ca1b2","line":6160,"updated":"2022-02-16 09:56:23.000000000","message":"s/Load/Read/ ???","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"867e804433d0dc1cb5d735f989ca852e3ee0cbc6","unresolved":false,"context_lines":[{"line_number":6157,"context_line":"\t\t.name \u003d \"read_memory\","},{"line_number":6158,"context_line":"\t\t.mode \u003d COMMAND_EXEC,"},{"line_number":6159,"context_line":"\t\t.jim_handler \u003d jim_target_read_memory,"},{"line_number":6160,"context_line":"\t\t.help \u003d \"Load Tcl list of 8/16/32/64 bit numbers from target memory\","},{"line_number":6161,"context_line":"\t\t.usage \u003d \"address width count [\u0027phys\u0027]\","},{"line_number":6162,"context_line":"\t},"},{"line_number":6163,"context_line":"\t{"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3a800629_91aaea18","line":6160,"in_reply_to":"4bb8aa07_383ca1b2","updated":"2022-02-23 16:09:01.000000000","message":"Done","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7bbaed718ae10f9e1ec66cc19a99dcb7c42e787c","unresolved":true,"context_lines":[{"line_number":7271,"context_line":"\t\t.name \u003d \"read_memory\","},{"line_number":7272,"context_line":"\t\t.mode \u003d COMMAND_EXEC,"},{"line_number":7273,"context_line":"\t\t.jim_handler \u003d jim_read_memory,"},{"line_number":7274,"context_line":"\t\t.help \u003d \"Load Tcl list of 8/16/32/64 bit numbers from target memory\","},{"line_number":7275,"context_line":"\t\t.usage \u003d \"address width count [\u0027phys\u0027]\","},{"line_number":7276,"context_line":"\t},"},{"line_number":7277,"context_line":"\t{"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"e915b1f8_a7aa518e","line":7274,"updated":"2022-02-16 09:56:23.000000000","message":"s/Load/Read/ ???","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"867e804433d0dc1cb5d735f989ca852e3ee0cbc6","unresolved":false,"context_lines":[{"line_number":7271,"context_line":"\t\t.name \u003d \"read_memory\","},{"line_number":7272,"context_line":"\t\t.mode \u003d COMMAND_EXEC,"},{"line_number":7273,"context_line":"\t\t.jim_handler \u003d jim_read_memory,"},{"line_number":7274,"context_line":"\t\t.help \u003d \"Load Tcl list of 8/16/32/64 bit numbers from target memory\","},{"line_number":7275,"context_line":"\t\t.usage \u003d \"address width count [\u0027phys\u0027]\","},{"line_number":7276,"context_line":"\t},"},{"line_number":7277,"context_line":"\t{"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"9c4b2584_5e27afa9","line":7274,"in_reply_to":"e915b1f8_a7aa518e","updated":"2022-02-23 16:09:01.000000000","message":"Done","commit_id":"b81943fc581f7fc81fbd5f9a00645efd4ea251bd"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"fa3cbb10cdda5e96f208ca99d7bceafc7635babd","unresolved":true,"context_lines":[{"line_number":4695,"context_line":"\t\treturn JIM_ERR;"},{"line_number":4696,"context_line":"\t}"},{"line_number":4697,"context_line":""},{"line_number":4698,"context_line":"\tJim_Obj *result_list \u003d Jim_NewListObj(interp, NULL, 0);"},{"line_number":4699,"context_line":""},{"line_number":4700,"context_line":"\twhile (count \u003e 0) {"},{"line_number":4701,"context_line":"\t\tconst unsigned int max_chunk_len \u003d buffersize / width;"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"c64b4d4c_6f0e383c","line":4698,"updated":"2022-02-24 15:21:25.000000000","message":"I think you need to add a line\nJim_IncrRefCount(result_list);\notherwise other call below to jimtcl could de-allocate this before we finish.","commit_id":"adcbbbd7dc73c2cf10d36dd9f1b591152fd7dafc"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4cd15e6b5604c7b1f3fa2161593ac56cea5bbb87","unresolved":false,"context_lines":[{"line_number":4695,"context_line":"\t\treturn JIM_ERR;"},{"line_number":4696,"context_line":"\t}"},{"line_number":4697,"context_line":""},{"line_number":4698,"context_line":"\tJim_Obj *result_list \u003d Jim_NewListObj(interp, NULL, 0);"},{"line_number":4699,"context_line":""},{"line_number":4700,"context_line":"\twhile (count \u003e 0) {"},{"line_number":4701,"context_line":"\t\tconst unsigned int max_chunk_len \u003d buffersize / width;"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"ca920481_d82c372c","line":4698,"in_reply_to":"0500bbab_0183f72c","updated":"2022-03-05 21:12:12.000000000","message":"Detailed? Quite messy, I would say! But it was the right time to dig inside jim and cleanup my mind on this.\nNow I need to find the right place to describe it in the documentation ...","commit_id":"adcbbbd7dc73c2cf10d36dd9f1b591152fd7dafc"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"6ba7c1140acb6f180a9ba8452024878e85da81fb","unresolved":true,"context_lines":[{"line_number":4695,"context_line":"\t\treturn JIM_ERR;"},{"line_number":4696,"context_line":"\t}"},{"line_number":4697,"context_line":""},{"line_number":4698,"context_line":"\tJim_Obj *result_list \u003d Jim_NewListObj(interp, NULL, 0);"},{"line_number":4699,"context_line":""},{"line_number":4700,"context_line":"\twhile (count \u003e 0) {"},{"line_number":4701,"context_line":"\t\tconst unsigned int max_chunk_len \u003d buffersize / width;"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"9b7c8664_8622c416","line":4698,"in_reply_to":"25255d2c_2473fe27","updated":"2022-03-05 10:14:58.000000000","message":"My suggestion above on how to recompile jimtcl with --maintainer doesn\u0027t work! You need to re-compile jimtcl after you run openocd configure. A little messy, I\u0027m trying to add a flag to openocd configure...","commit_id":"adcbbbd7dc73c2cf10d36dd9f1b591152fd7dafc"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"96c35cfda1084856fbaa86bd51e4a1c6d5956ad8","unresolved":true,"context_lines":[{"line_number":4695,"context_line":"\t\treturn JIM_ERR;"},{"line_number":4696,"context_line":"\t}"},{"line_number":4697,"context_line":""},{"line_number":4698,"context_line":"\tJim_Obj *result_list \u003d Jim_NewListObj(interp, NULL, 0);"},{"line_number":4699,"context_line":""},{"line_number":4700,"context_line":"\twhile (count \u003e 0) {"},{"line_number":4701,"context_line":"\t\tconst unsigned int max_chunk_len \u003d buffersize / width;"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"9b9b9990_c77b7058","line":4698,"in_reply_to":"781bda7a_6b6553d6","updated":"2022-03-05 00:01:02.000000000","message":"Frankly speaking, I\u0027m still confused on this topic but it should be necessary.\n\nIn jimtcl code every time Jim_New\u003cSomething\u003eObj() is called it moves a Jim object from the list of available objects to the list of \"live\" objects (see jimtcl/jim.c Jim_NewObj()). The new object has refCount\u003d0, meaning unused.\nThe jimtcl garbage collector should scan the \"live\" objects to put the unused ones back in the available list. But looks like the garbage collector starts only when the TCL commands \"collect\" or \"ref\" are executed, and we don\u0027t call them.\nSo, maybe the garbage collection is not the real issue.\n\nAnyway, using Jim_{Incr,Decr}RefCount we force removing the object from \"live\" list and move it back in the available list, preventing a kind of memory leak. This leak causes jimtcl to allocate extra memory when the available list get empty, even if several unused objects are in the \"live\" list.\n\nIf you build jimtcl in maintainer mode you get the list of \"live\" objects at openocd exit. In configure.ac \n-    AX_CONFIG_SUBDIR_OPTION([jimtcl], [--disable-install-jim])\n+    AX_CONFIG_SUBDIR_OPTION([jimtcl], [--disable-install-jim --maintainer])\nthen full rebuild.\nI have quickly run a test, adding to src/openocd.c\n+       Jim_NewStringObj(cmd_ctx-\u003einterp, \"Hello\", -1);\n        /* Shutdown commandline interface */\n        command_exit(cmd_ctx);\nand I get:\n-------------------------------------\nObjects still in the free list:\n0x55a9bdc6c980 (0) string    : \u0027Hello\u0027\n-------------------------------------\nJIM INTERPRETER PANIC: Live list non empty freeing the interpreter! Leak?\nfollowed by a useless backtrace.","commit_id":"adcbbbd7dc73c2cf10d36dd9f1b591152fd7dafc"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"26c1eb7356d52f852d634e6bedcd9f0d5f614514","unresolved":false,"context_lines":[{"line_number":4695,"context_line":"\t\treturn JIM_ERR;"},{"line_number":4696,"context_line":"\t}"},{"line_number":4697,"context_line":""},{"line_number":4698,"context_line":"\tJim_Obj *result_list \u003d Jim_NewListObj(interp, NULL, 0);"},{"line_number":4699,"context_line":""},{"line_number":4700,"context_line":"\twhile (count \u003e 0) {"},{"line_number":4701,"context_line":"\t\tconst unsigned int max_chunk_len \u003d buffersize / width;"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"0500bbab_0183f72c","line":4698,"in_reply_to":"9b7c8664_8622c416","updated":"2022-03-05 20:03:57.000000000","message":"Nice, thanks for the detailed explanation!","commit_id":"adcbbbd7dc73c2cf10d36dd9f1b591152fd7dafc"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"376b7f05a757eb7cde11b00bb2341dda7c9e3a0a","unresolved":true,"context_lines":[{"line_number":4695,"context_line":"\t\treturn JIM_ERR;"},{"line_number":4696,"context_line":"\t}"},{"line_number":4697,"context_line":""},{"line_number":4698,"context_line":"\tJim_Obj *result_list \u003d Jim_NewListObj(interp, NULL, 0);"},{"line_number":4699,"context_line":""},{"line_number":4700,"context_line":"\twhile (count \u003e 0) {"},{"line_number":4701,"context_line":"\t\tconst unsigned int max_chunk_len \u003d buffersize / width;"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"25255d2c_2473fe27","line":4698,"in_reply_to":"9b9b9990_c77b7058","updated":"2022-03-05 09:25:03.000000000","message":"I\u0027m running some experiment.\nIf we left code as is here, no Jim_IncrRefCount(), then refCount is zero.\nIn line 4751 the Jim_DecrRefCount() is unbalanced, and cause panic in jimtcl\nJIM INTERPRETER PANIC: !!!Object 0x55a44dca3840 freed with bad refcount -1, type\u003dlist\nIn line 4755 we use the list as parameter of Jim_SetResult(). Is this function that internally increments refCount and then decrements it causing the free of the list object. So, no leak!\n\nYou have two possible implementations:\na) add here the Jim_IncrRefCount() and put a Jim_DecrRefCount() before every exit. In line 4751 it\u0027s already there. Need to add it in line 4756.\nb) no Jim_IncrRefCount() here, so no need add anything in line 4756. But line 4755 must be changed: or having both Jim_IncrRefCount()+Jim_DecrRefCount(), or only one Jim_FreeNewObj().\n\nI prefer a) because it\u0027s easier to explain and more generic. We should document it.\n\nInstead b) requires the developer to know and take care of which call can cause an implicit incr/decr of a parameter that frees it. Imagine the mess for a newbie that simply adds a line to existing code and causes the free of the object! But we still need to document this to explain why in line 4741 the new string object doesn\u0027t need to be freed (because used as argument of another Jim_XX call).","commit_id":"adcbbbd7dc73c2cf10d36dd9f1b591152fd7dafc"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"347ec1dac6ff9b98dfd7fbb399008fa9e5c95d68","unresolved":true,"context_lines":[{"line_number":4695,"context_line":"\t\treturn JIM_ERR;"},{"line_number":4696,"context_line":"\t}"},{"line_number":4697,"context_line":""},{"line_number":4698,"context_line":"\tJim_Obj *result_list \u003d Jim_NewListObj(interp, NULL, 0);"},{"line_number":4699,"context_line":""},{"line_number":4700,"context_line":"\twhile (count \u003e 0) {"},{"line_number":4701,"context_line":"\t\tconst unsigned int max_chunk_len \u003d buffersize / width;"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"781bda7a_6b6553d6","line":4698,"in_reply_to":"c64b4d4c_6f0e383c","updated":"2022-03-03 18:49:01.000000000","message":"Hm, we don\u0027t have something like that elsewhere in our code base, e.g. jim_flash_list() in flash/nor/tcl.c\n\nAre you sure that\u0027s necessary?","commit_id":"adcbbbd7dc73c2cf10d36dd9f1b591152fd7dafc"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"fa3cbb10cdda5e96f208ca99d7bceafc7635babd","unresolved":true,"context_lines":[{"line_number":4753,"context_line":"\t}"},{"line_number":4754,"context_line":""},{"line_number":4755,"context_line":"\tJim_SetResult(interp, result_list);"},{"line_number":4756,"context_line":""},{"line_number":4757,"context_line":"\treturn JIM_OK;"},{"line_number":4758,"context_line":"}"},{"line_number":4759,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":7,"id":"6e3262e1_4122c497","line":4756,"updated":"2022-02-24 15:21:25.000000000","message":"and here add\nJim_DecrRefCount(interp, result_list);","commit_id":"adcbbbd7dc73c2cf10d36dd9f1b591152fd7dafc"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"07c1cef9b17c8af4cc4e973638442e345a3006af","unresolved":false,"context_lines":[{"line_number":4753,"context_line":"\t}"},{"line_number":4754,"context_line":""},{"line_number":4755,"context_line":"\tJim_SetResult(interp, result_list);"},{"line_number":4756,"context_line":""},{"line_number":4757,"context_line":"\treturn JIM_OK;"},{"line_number":4758,"context_line":"}"},{"line_number":4759,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":7,"id":"9b84382d_14b13d0d","line":4756,"in_reply_to":"6e3262e1_4122c497","updated":"2022-03-05 20:04:26.000000000","message":"Done","commit_id":"adcbbbd7dc73c2cf10d36dd9f1b591152fd7dafc"}]}
