< Previous by Date Date Index Next by Date >
< Previous in Thread Thread Index Next in Thread >

Re: [reSIProcate] Visual Studio 2005 compilation warnings of 1.4 branch


On 12/9/08 5:13 PM, Matthias Moetje wrote:
Although this wrapper might seem a bit more complex, it can even improve
performance (compared to strncpy alone) when copying small strings to large buffers,

But it will be markedly slower when copying strings into buffers that are on the order of the correct size, which is by far the more common case -- you end up scanning the string twice to comply with the behavior specified for strcpy_s.

An advantage with this approach is that this will stronger force us to check the result of the *_s functions in the code and take appropriate measures which is not the case with the strn* functions.

If you want an alternate model to emulate, you're far better off with strlcpy -- you can perform the same checks as strcpy_s without the performance penalty (and it doesn't null-fill the buffer like strncpy).

For unsupported platforms, you can pull in an implementation from here:

http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/string/strlcpy.c?rev=1.11&content-type=text/x-cvsweb-markup

(And, if you need a strlcat: http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/string/strlcat.c?rev=1.13&content-type=text/x-cvsweb-markup)

/a