sds.c/sdscatvprintf: va_end needs to be fixed

A protential bug.

Test on Ubuntu 12.04
void hello(const char *fmt, ...)
{
    va_list ap;
    printf("0x%08x\n",*ap);
    va_start(ap, fmt);
    printf("0x%08x\n",*ap);
    va_end(ap);
    printf("0x%08x\n",*ap);
}
va_end do nothing with ap

but, should this be a protential bug with other platforms?
Should be `length`, if you actually correct it ;)