8002091: tools/launcher/ToolsOpts.java test started to fail since 7u11 b01 on Windows
Reviewed-by: darcy, jjh, mschoene
This commit is contained in:
parent
39edc8d2b5
commit
695e6ab2e0
@ -66,7 +66,7 @@ int JLI_GetStdArgc();
|
||||
#include <io.h>
|
||||
#define JLI_StrCaseCmp(p1, p2) stricmp((p1), (p2))
|
||||
#define JLI_StrNCaseCmp(p1, p2, p3) strnicmp((p1), (p2), (p3))
|
||||
size_t JLI_Snprintf(char *buffer, size_t size, const char *format, ...);
|
||||
int JLI_Snprintf(char *buffer, size_t size, const char *format, ...);
|
||||
void JLI_CmdToArgs(char *cmdline);
|
||||
#define JLI_Lseek _lseeki64
|
||||
#else /* NIXES */
|
||||
|
@ -526,27 +526,35 @@ jlong Counter2Micros(jlong counts)
|
||||
}
|
||||
return (counts * 1000 * 1000)/counterFrequency.QuadPart;
|
||||
}
|
||||
|
||||
/*
|
||||
* windows snprintf does not guarantee a null terminator in the buffer,
|
||||
* if the computed size is equal to or greater than the buffer size,
|
||||
* as well as error conditions, this function guarantees a null terminator
|
||||
* under all these conditions. An unreasonable buffer size will return
|
||||
* an error value.
|
||||
* as well as error conditions. This function guarantees a null terminator
|
||||
* under all these conditions. An unreasonable buffer or size will return
|
||||
* an error value. Under all other conditions this function will return the
|
||||
* size of the bytes actually written minus the null terminator, similar
|
||||
* to ansi snprintf api. Thus when calling this function the caller must
|
||||
* ensure storage for the null terminator.
|
||||
*/
|
||||
size_t
|
||||
JLI_Snprintf(char* buffer, size_t size, const char* format, ...)
|
||||
{
|
||||
size_t rc;
|
||||
int
|
||||
JLI_Snprintf(char* buffer, size_t size, const char* format, ...) {
|
||||
int rc;
|
||||
va_list vl;
|
||||
if (size <= 0)
|
||||
if (size == 0 || buffer == NULL)
|
||||
return -1;
|
||||
buffer[0] = '\0';
|
||||
va_start(vl, format);
|
||||
rc = vsnprintf(buffer, size - 1, format, vl);
|
||||
/* force a null terminator, if something is amiss */
|
||||
if (rc < 0 || rc >= size)
|
||||
buffer[size - 1] = '\0';
|
||||
rc = vsnprintf(buffer, size, format, vl);
|
||||
va_end(vl);
|
||||
/* force a null terminator, if something is amiss */
|
||||
if (rc < 0) {
|
||||
/* apply ansi semantics */
|
||||
buffer[size - 1] = '\0';
|
||||
return size;
|
||||
} else if (rc == size) {
|
||||
/* force a null terminator */
|
||||
buffer[size - 1] = '\0';
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
||||
@ -1441,7 +1449,10 @@ CreateApplicationArgs(JNIEnv *env, char **strv, int argc)
|
||||
// we add the indicator
|
||||
tlen = 1 + JLI_StrLen(strv[i]) + 1;
|
||||
nargv[i] = (char *) JLI_MemAlloc(tlen);
|
||||
JLI_Snprintf(nargv[i], tlen, "%c%s", arg_expand ? 'T' : 'F', strv[i]);
|
||||
if (JLI_Snprintf(nargv[i], tlen, "%c%s", arg_expand ? 'T' : 'F',
|
||||
strv[i]) < 0) {
|
||||
return NULL;
|
||||
}
|
||||
JLI_TraceLauncher("%s\n", nargv[i]);
|
||||
}
|
||||
|
||||
|
@ -23,6 +23,7 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 8002091
|
||||
* @summary Test options patterns for javac,javah,javap and javadoc using
|
||||
* javac as a test launcher. Create a dummy javac and intercept options to check
|
||||
* reception of options as passed through the launcher without having to launch
|
||||
|
Loading…
Reference in New Issue
Block a user