[v3 PATCH 1/4] shcore: Implement a bunch of string conversion functions.
Dmitry Timoshkov
dmitry at baikal.ru
Thu Nov 29 04:01:16 CST 2018
Nikolay Sivov <nsivov at codeweavers.com> wrote:
> >> +DWORD WINAPI SHAnsiToAnsi(const char *src, char *dest, int dest_len)
> >> +{
> >> + DWORD ret;
> >> +
> >> + TRACE("(%s, %p, %d)\n", debugstr_a(src), dest, dest_len);
> >> +
> >> + if (!src || !dest || dest_len <= 0)
> >> + return 0;
> >> +
> >> + lstrcpynA(dest, src, dest_len);
> >> + ret = strlen(dest);
> >> +
> >> + return src[ret] ? 0 : ret + 1;
> >> +}
> > lstrcpynA(dest, src, dest_len);
> > ret = strlen(dest);
> > if (ret) ret++;
> > return ret;
> It won't pass the tests.
... because of a typo.
> >> +DWORD WINAPI SHUnicodeToAnsi(const WCHAR *src, char *dest, int dest_len)
> >> +{
> >> + int ret = 1;
> >> +
> >> + TRACE("(%s, %p, %d)\n", debugstr_w(src), dest, dest_len);
> >> +
> >> + if (!dest || !dest_len)
> >> + return 0;
> >> +
> >> + if (src)
> >> + {
> >> + ret = WideCharToMultiByte(CP_ACP, 0, src, -1, dest, dest_len, NULL, NULL);
> >> + if (!ret)
> >> + {
> >> + dest[dest_len - 1] = 0;
> >> + ret = dest_len;
> >> + }
> >> + }
> >> + else
> >> + dest[0] = 0;
> >> +
> >> + return ret;
> >> +}
> > if (!src)
> > {
> > *dst = 0;
> > return 1;
> > }
> >
> > if (!WideCharToMultiByte(CP_ACP, 0, src, -1, dest, dest_len, NULL, NULL))
> > dest[dest_len - 1] = 0;
> > return dest_len;
>
> This does the same thing.
That's the whole point: do the same thing using simpler code.
--
Dmitry.
More information about the wine-devel
mailing list