185 { |
185 { |
186 jstring returnValue = NULL; |
186 jstring returnValue = NULL; |
187 JNF_COCOA_ENTER(env); |
187 JNF_COCOA_ENTER(env); |
188 |
188 |
189 UInt8 pathCString[MAXPATHLEN + 1]; |
189 UInt8 pathCString[MAXPATHLEN + 1]; |
190 size_t pathSize = sizeof(pathCString); |
190 size_t maxPathLen = sizeof(pathCString) - 1; |
191 |
191 |
192 jbyte *byteArray = (*env)->GetByteArrayElements(env, pathToAlias, NULL); |
192 jbyte *byteArray = (*env)->GetByteArrayElements(env, pathToAlias, NULL); |
193 jsize length = (*env)->GetArrayLength(env, pathToAlias); |
193 jsize length = (*env)->GetArrayLength(env, pathToAlias); |
194 |
194 |
195 if (length > pathSize) { |
195 if (length > maxPathLen) { |
196 length = pathSize; |
196 length = maxPathLen; |
197 } |
197 } |
198 strncpy((char *)pathCString, (char *)byteArray, length); |
198 strncpy((char *)pathCString, (char *)byteArray, length); |
199 // make sure it's null terminated |
199 // make sure it's null terminated |
200 pathCString[length] = '\0'; |
200 pathCString[length] = '\0'; |
201 (*env)->ReleaseByteArrayElements(env, pathToAlias, byteArray, JNI_ABORT); |
201 (*env)->ReleaseByteArrayElements(env, pathToAlias, byteArray, JNI_ABORT); |