@rryan, please have a look at 3 lines below: 
our freshly zeroed buffer is overwitten in any case, except of the last byte. 
http://www.cplusplus.com/reference/cwchar/wcsncpy/

So in case of a missing 0 terminator we have 

 JUNKJUNKJUNK\0

in any case, The added zero is just the last resort. 

Do not know if this makes a sense, but from the review focuses to this lines only, 
tmp[max_length] = 0; 
is fine. 

We may avoid this confusion if we place this after wcsncpy(tmp, pStr, max_length);