diff --git a/src/ctrl/ctrl_core.c b/src/ctrl/ctrl_core.c index 3ef242a7..4f922e78 100644 --- a/src/ctrl/ctrl_core.c +++ b/src/ctrl/ctrl_core.c @@ -6095,7 +6095,7 @@ ctrl_memory_artifact_create(String8 key, B32 *cancel_signal, B32 *retry_out, U64 //- rjf: read successful, OR we have no history -> submit to hash store U128 hash = {0}; - if((zero_terminated_size > 0 || !key_has_history) && range_size != 0 && pre_read_mem_gen == post_read_mem_gen) + if((zero_terminated_size > 0 || !key_has_history) && range_base != 0 && range_size != 0 && pre_read_mem_gen == post_read_mem_gen) { hash = c_submit_data(content_key, &range_arena, str8((U8 *)range_base, zero_terminated_size)); gen_out[0] = pre_read_mem_gen; diff --git a/src/demon/win32/demon_core_win32.c b/src/demon/win32/demon_core_win32.c index ea1f3118..8ccf1fa7 100644 --- a/src/demon/win32/demon_core_win32.c +++ b/src/demon/win32/demon_core_win32.c @@ -322,7 +322,9 @@ dmn_w32_process_read(HANDLE process, Rng1U64 range, void *dst) { DWORD error = GetLastError(); log_infof("'Win32 ReadProcessMemory failure': { [0x%I64x, 0x%I64x), code: %i }\n", range.min, range.max, error); - bytes_read += actual_read; + // NOTE(rjf): I have discovered that `actual_read` is *NOT* guaranteed to have + // a usable value if `ReadProcessMemory` fails! + // bytes_read += actual_read; (void)error; break; }