writeAll on CharPointer_ASCII does not increment the pointer to the data (it uses strcpy), while on UTF8 strings it does the increment.
StringArray::joinIntoString depends on the incrementing logic. I created a custom Ascii string class, and this is where it failed when UTF8 was replaced with ASCII.
Besides, I'm not sure if it's good to check for the null termination inside joinIntoString. Maybe it's better to create some additional function like writeIntoString(data,count) and pass the length explicitly, because in all cases where it is used internally the length is known explicitly?