src/os/bsd/vm/os_bsd.cpp

changeset 4261
6cb0d32b828b
parent 4229
0af5da0c9d9d
child 4299
f34d701e952e
child 4318
cd3d6a6b95d9
     1.1 --- a/src/os/bsd/vm/os_bsd.cpp	Mon Nov 05 19:33:44 2012 -0500
     1.2 +++ b/src/os/bsd/vm/os_bsd.cpp	Wed Nov 07 17:53:02 2012 -0500
     1.3 @@ -1198,19 +1198,20 @@
     1.4    return os::stat(filename, &statbuf) == 0;
     1.5  }
     1.6  
     1.7 -void os::dll_build_name(char* buffer, size_t buflen,
     1.8 +bool os::dll_build_name(char* buffer, size_t buflen,
     1.9                          const char* pname, const char* fname) {
    1.10 +  bool retval = false;
    1.11    // Copied from libhpi
    1.12    const size_t pnamelen = pname ? strlen(pname) : 0;
    1.13  
    1.14 -  // Quietly truncate on buffer overflow.  Should be an error.
    1.15 +  // Return error on buffer overflow.
    1.16    if (pnamelen + strlen(fname) + strlen(JNI_LIB_PREFIX) + strlen(JNI_LIB_SUFFIX) + 2 > buflen) {
    1.17 -      *buffer = '\0';
    1.18 -      return;
    1.19 +    return retval;
    1.20    }
    1.21  
    1.22    if (pnamelen == 0) {
    1.23      snprintf(buffer, buflen, JNI_LIB_PREFIX "%s" JNI_LIB_SUFFIX, fname);
    1.24 +    retval = true;
    1.25    } else if (strchr(pname, *os::path_separator()) != NULL) {
    1.26      int n;
    1.27      char** pelements = split_path(pname, &n);
    1.28 @@ -1222,6 +1223,7 @@
    1.29        snprintf(buffer, buflen, "%s/" JNI_LIB_PREFIX "%s" JNI_LIB_SUFFIX,
    1.30            pelements[i], fname);
    1.31        if (file_exists(buffer)) {
    1.32 +        retval = true;
    1.33          break;
    1.34        }
    1.35      }
    1.36 @@ -1236,7 +1238,9 @@
    1.37      }
    1.38    } else {
    1.39      snprintf(buffer, buflen, "%s/" JNI_LIB_PREFIX "%s" JNI_LIB_SUFFIX, pname, fname);
    1.40 +    retval = true;
    1.41    }
    1.42 +  return retval;
    1.43  }
    1.44  
    1.45  const char* os::get_current_directory(char *buf, int buflen) {

mercurial