If you're passing in
append("foo", 'X');
it will crash, because foo is normally put in readonly storage. Even if it isn't it will overwrite something bad probably!
In this case the compiler if it's kind should warn you of conversion from const char * to char * which would be a clue.