--- old/src/windows/demo/jvmti/hprof/hprof_md.c 2013-03-04 19:20:11.785722272 +0100 +++ new/src/windows/demo/jvmti/hprof/hprof_md.c 2013-03-04 19:20:11.613722264 +0100 @@ -372,6 +372,7 @@ // Loosley based on os_windows.cpp char *pathname = (char *)pname; + *buffer = '\0'; while (strlen(pathname) > 0) { char *p = strchr(pathname, ';'); if (p == NULL) { @@ -382,16 +383,20 @@ continue; } if (*(p-1) == ':' || *(p-1) == '\\') { - (void)_snprintf(buffer, buflen, "%.*s%s.dll", (p - pathname), + (void)_snprintf(buffer, buflen, "%.*s%s.dll", (int)(p - pathname), pathname, fname); } else { - (void)_snprintf(buffer, buflen, "%.*s\\%s.dll", (p - pathname), + (void)_snprintf(buffer, buflen, "%.*s\\%s.dll", (int)(p - pathname), pathname, fname); } if (_access(buffer, 0) == 0) { break; } - pathname = p + 1; + if (*p == '\0') { + pathname = p; + } else { + pathname = p + 1; + } *buffer = '\0'; } }