From d228d3127c19cafad375501672f82d0940ecac92 Mon Sep 17 00:00:00 2001 From: Carlos Lucasius Date: Thu, 9 Feb 2012 13:43:15 +0000 Subject: [PATCH] 7114611: (fs) DirectoryStream fails with SIGBUS on some embedded platforms, dirent alignment Reviewed-by: dholmes, alanb --- jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c b/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c index 57882b6a473..596dd990e1e 100644 --- a/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c +++ b/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c @@ -605,9 +605,12 @@ Java_sun_nio_fs_UnixNativeDispatcher_closedir(JNIEnv* env, jclass this, jlong di JNIEXPORT jbyteArray JNICALL Java_sun_nio_fs_UnixNativeDispatcher_readdir(JNIEnv* env, jclass this, jlong value) { - char entry[sizeof(struct dirent64) + PATH_MAX + 1]; - struct dirent64* ptr = (struct dirent64*)&entry; struct dirent64* result; + struct { + struct dirent64 buf; + char name_extra[PATH_MAX + 1 - sizeof result->d_name]; + } entry; + struct dirent64* ptr = &entry.buf; int res; DIR* dirp = jlong_to_ptr(value);