We're actually terminating with a file separator.  If s_len is less than strlen(s) and s[s_len - 1] isn't a separator, we'll insert a separator and terminate with a '\0'.  This would almost be a  useful behaviour, except that no '\0' is inserted as s[s_len] when s[s_len - 1] is already a separator.
PathAppendTrailingSlash("path/to/file.ext", 13) => true, modifies buffer to "path/to/file/"
but
PathAppendTrailingSlash("path/to/file.ext", 5) => false, doesn't modify buffer.

The documentation should probably say that s_len should be strlen(s) and there must be space to append a byte.