Hash Map Library for any type (Void Pointers)
Bug

Suppose there are 2 keys that hash to the same bucket (i.e. HashLocation).  If you add key #1 and then search for key #2, mapGet() will return the data for key #1 instead of returning NULL.  The problem is here:

if (theHashLocation-&gt;numberNodes==1) {
    HashMapNode* dataNode = theHashLocation-&gt;nodes[0];
    return dataNode-&gt;data;
}


Here, you assume that if there is only one node in the bucket, that it must match the key you are looking for.  But you need to still compare the key to see if it matches.

Unnecessary array of pointers

Your hasharray inside HashMap is an array of pointers to HashLocations.  There's no need for hasharray to be an array of pointers.  It should simply be an array of HashLocations instead.  Using one contiguous array is simpler (less allocations) and better for cache locality.

Bad reallocation strategy

The way you resize each bucket when it grows is by reallocating by one element larger.  This will use \$O(n^2)\$ time because of all the recopying required.  You should use a better reallocation strategy such as doubling the size every time and keeping track of how many elements are being used.

Poor hash function

Your hash function simply adds each character of the string together.  This is a poor hash function which will result in many hash collisions.  You should try something different such as rotating the hash by 5 bits every time you add the next character in.  Here is a StackOverflow question about string hashes, and a short webpage describing a few string hashes, linked from that question.