title: What happens if I ReleaseMutex() twice?
body: <p>The Microsoft documentation is silent about what happens if I mistakenly call <code>ReleaseMutex()</code>  when the mutex is already unlocked.</p>
  
  <p><strong>Details:</strong></p>
  
  <p>I'm trying to fix up some Windows code without having access to the compiler.</p>
  
  <p>I realise that WinApi mutexes are all recursive, and reference-counted. If I were making use of that feature, it's obvious that the extra <code>ReleaseMutex()</code> call would prematurely decrement the reference counter.</p>
  
  <p>However, the code that I am looking at does not use the mutex recursively, so the reference count never gets higher than '1'. It <strong>does</strong> release the mutex more times than necessary... so what happens? Does the reference count go negative? Does it stay at zero (unlocked) and just return an ignorable error?</p>
  
  <p>(Naturally, this code doesn't actually check for errors when it calls these functions!)</p>