* Update MSVCRT_CHECK_PMT and co.
* Update the use of MSVCRT_INVALID_PMT throughout our code.
* Fix the return of _ltoa_s() in some case. Fixes a couple msvcrt:string tests.
CORE-8080
svn path=/trunk/; revision=63223
uintptr_t pReserved);
#ifndef _LIBCNT_
-#define MSVCRT_INVALID_PMT(x) _invalid_parameter(NULL, NULL, NULL, 0, 0)
-#define MSVCRT_CHECK_PMT(x) ((x) || (MSVCRT_INVALID_PMT(0),0))
+#define MSVCRT_INVALID_PMT(x,err) (*_errno() = (err), _invalid_parameter(NULL, NULL, NULL, 0, 0))
+#define MSVCRT_CHECK_PMT_ERR(x,err) ((x) || (MSVCRT_INVALID_PMT( 0, (err) ), 0))
+#define MSVCRT_CHECK_PMT(x) MSVCRT_CHECK_PMT_ERR((x), EINVAL)
#else
/* disable secure crt parameter checks */
-#define MSVCRT_CHECK_PMT
-#define MSVCRT_INVALID_PMT
+#define MSVCRT_INVALID_PMT(x,err)
+#define MSVCRT_CHECK_PMT_ERR(x,err)
+#define MSVCRT_CHECK_PMT(x) (x)
#endif
if (count != _TRUNCATE)
{
/* We can't, invoke invalid parameter handler */
- MSVCRT_INVALID_PMT("Buffer is too small");
+ MSVCRT_INVALID_PMT("Buffer is too small", ERANGE);
/* If we came back, set the buffer to an empty string */
*buffer = 0;
if (!fd)
{
- MSVCRT_INVALID_PMT("null out fd pointer");
- *_errno() = EINVAL;
+ MSVCRT_INVALID_PMT("null out fd pointer", EINVAL);
return EINVAL;
}
if (!fd)
{
- MSVCRT_INVALID_PMT("null out fd pointer");
- *_errno() = EINVAL;
+ MSVCRT_INVALID_PMT("null out fd pointer", EINVAL);
return EINVAL;
}
{
if (_tcslen(curPath) + 1 > count)
{
- MSVCRT_INVALID_PMT("buf[count] is too small");
- *_errno() = ERANGE;
+ MSVCRT_INVALID_PMT("buf[count] is too small", ERANGE);
return ERANGE;
}
_tcscpy(buf, curPath);
*p++ = *pos--;
str[0] = '\0';
- MSVCRT_INVALID_PMT("str[size] is too small");
-#ifndef _LIBCNT_
- *_errno() = ERANGE;
-#endif
+ MSVCRT_INVALID_PMT("str[size] is too small", ERANGE);
return ERANGE;
}
}while(value != 0);
if((unsigned)(buffer-pos+65) > size) {
- MSVCRT_INVALID_PMT("str[size] is too small");
-#ifndef _LIBCNT_
- *_errno() = EINVAL;
-#endif
+ MSVCRT_INVALID_PMT("str[size] is too small", EINVAL);
return EINVAL;
}
*p++ = *pos--;
str[0] = '\0';
- MSVCRT_INVALID_PMT("str[size] is too small");
-#ifndef _LIBCNT_
- *_errno() = EINVAL;
-#endif
+ MSVCRT_INVALID_PMT("str[size] is too small", ERANGE);
return ERANGE;
}
for (pos = buffer + 63, i = 0; i < size; i++)
*p++ = *pos--;
- MSVCRT_INVALID_PMT("str[size] is too small");
+ MSVCRT_INVALID_PMT("str[size] is too small", ERANGE);
str[0] = '\0';
-#ifndef _LIBCNT_
- *_errno() = ERANGE;
-#endif
return ERANGE;
}
} while (value != 0);
if((size_t)(buffer-pos+65) > size) {
- MSVCRT_INVALID_PMT("str[size] is too small");
-#ifndef _LIBCNT_
- *_errno() = EINVAL;
-#endif
+ MSVCRT_INVALID_PMT("str[size] is too small", EINVAL);
return EINVAL;
}
for (pos = buffer + 31, i = 0; i < size; i++)
*p++ = *pos--;
- MSVCRT_INVALID_PMT("str[size] is too small");
+ MSVCRT_INVALID_PMT("str[size] is too small", ERANGE);
str[0] = '\0';
-#ifndef _LIBCNT_
- *_errno() = ERANGE;
-#endif
return ERANGE;
}
if (str && *str) len += lstrlenW(str) + 2 /* ': ' */;
if (len > nc)
{
- MSVCRT_INVALID_PMT("buffer[nc] is too small");
- _set_errno(ERANGE);
+ MSVCRT_INVALID_PMT("buffer[nc] is too small", ERANGE);
return ERANGE;
}
if (str && *str)
}
if (dststart == elem)
{
- MSVCRT_INVALID_PMT("dst[elem] is not NULL terminated\n");
+ MSVCRT_INVALID_PMT("dst[elem] is not NULL terminated\n", EINVAL);
return EINVAL;
}
dst[dststart+srclen] = '\0';
return ret;
}
- MSVCRT_INVALID_PMT("dst[elem] is too small");
+ MSVCRT_INVALID_PMT("dst[elem] is too small", ERANGE);
dst[0] = '\0';
return ERANGE;
}
__time64_t time = *ptime;
if (!ptm)
{
- _set_errno(ERROR_BAD_COMMAND);
- MSVCRT_INVALID_PMT("ptm == NULL");
+ MSVCRT_INVALID_PMT("ptm == NULL", ERROR_BAD_COMMAND);
return ERROR_BAD_COMMAND;
}
if (!ptime)
{
- _set_errno(ERROR_BAD_COMMAND);
- MSVCRT_INVALID_PMT("ptime == NULL");
+ MSVCRT_INVALID_PMT("ptime == NULL", ERROR_BAD_COMMAND);
return ERROR_BAD_COMMAND;
}
__time64_t time = *ptime;
if (!ptm)
{
- _set_errno(ERROR_BAD_COMMAND);
- MSVCRT_INVALID_PMT("ptm == NULL");
+ MSVCRT_INVALID_PMT("ptm == NULL", ERROR_BAD_COMMAND);
return ERROR_BAD_COMMAND;
}
if (!ptime)
{
- _set_errno(ERROR_BAD_COMMAND);
- MSVCRT_INVALID_PMT("ptime == NULL");
+ MSVCRT_INVALID_PMT("ptime == NULL", ERROR_BAD_COMMAND);
return ERROR_BAD_COMMAND;
}
return 0;
}
- MSVCRT_INVALID_PMT("dest[numberOfElements] is too small");
+ MSVCRT_INVALID_PMT("dest[numberOfElements] is too small", EINVAL);
dest[0] = '\0';
- *_errno() = EINVAL;
return EINVAL;
}