I was thinking the same thing. Should this become:

```c
GIT_EXTERN(int) git_reference_symbolic_set_target(
    git_reference **out,
    git_reference *ref,
    const char *target);
```

Of course, the question then will be, should you free the input reference as a side effect? I know the folks who will be most happy about this change will also be happier if it does not free the input as a side effect. (Those same folks would prefer if `git_reference_delete` also didn't free as a side effect and forced you to explicitly free the reference object - perhaps we should entertain their madness :-)