diff --git a/libfuse/lib/fuse_lowlevel.c b/libfuse/lib/fuse_lowlevel.c
index 91998ae6..5a8fd151 100644
--- a/libfuse/lib/fuse_lowlevel.c
+++ b/libfuse/lib/fuse_lowlevel.c
@@ -307,21 +307,27 @@ fuse_reply_entry(fuse_req_t                     req,
   return send_reply_ok(req, &arg, size);
 }
 
+struct fuse_create_out
+{
+  struct fuse_entry_out e;
+  struct fuse_open_out o;
+};
+
 int
 fuse_reply_create(fuse_req_t                     req,
                   const struct fuse_entry_param *e,
                   const fuse_file_info_t        *f)
 {
-  char buf[sizeof(struct fuse_entry_out) + sizeof(struct fuse_open_out)] = {0};
+  struct fuse_create_out buf = {0};
   size_t entrysize = req->f->conn.proto_minor < 9 ?
     FUSE_COMPAT_ENTRY_OUT_SIZE : sizeof(struct fuse_entry_out);
-  struct fuse_entry_out *earg = (struct fuse_entry_out *) buf;
-  struct fuse_open_out *oarg = (struct fuse_open_out *) (buf + entrysize);
+  struct fuse_entry_out *earg = (struct fuse_entry_out*)&buf.e;
+  struct fuse_open_out  *oarg = (struct fuse_open_out*)(((char*)&buf)+entrysize);
 
   fill_entry(earg, e);
   fill_open(oarg, f);
 
-  return send_reply_ok(req, buf, entrysize + sizeof(struct fuse_open_out));
+  return send_reply_ok(req, &buf, entrysize + sizeof(struct fuse_open_out));
 }
 
 int
diff --git a/src/rnd.cpp b/src/rnd.cpp
index c30f3a74..9a432d56 100644
--- a/src/rnd.cpp
+++ b/src/rnd.cpp
@@ -34,7 +34,9 @@ RND::RND()
 
   gettimeofday(&tv,NULL);
 
-  G_SEED = ((tv.tv_sec << 32) | (tv.tv_usec));
+  G_SEED   = tv.tv_sec;
+  G_SEED <<= 32;
+  G_SEED  |= tv.tv_usec;
 }
 
 uint64_t