The witness calculated generated with circom --cpp may not work depending on the input signal names.
In the calcwit.cpp, if the signal name hash h happens to satisfy pos = (h % 256) = get_size_of_input_hashmap() - 1 and there is a hashmap collision, then the loop fails to find the InputHashMap entry.
In our case (found by @2dvorak) the two signals were hashed to the pos = 255. "expLen" (h = 13708731413403068927) and "audValOffset" (h = 16744535348853068031).
The witness calculated generated with
circom --cpp
may not work depending on the input signal names.In the calcwit.cpp, if the signal name hash
h
happens to satisfypos = (h % 256) = get_size_of_input_hashmap() - 1
and there is a hashmap collision, then the loop fails to find the InputHashMap entry.In our case (found by @2dvorak) the two signals were hashed to the
pos = 255
. "expLen" (h = 13708731413403068927) and "audValOffset" (h = 16744535348853068031).This PR fixes the edge case.