diff -dupr zip30-old/fileio.c zip30/fileio.c
--- zip30-old/fileio.c	2008-05-28 20:13:24.000000000 +0200
+++ zip30/fileio.c	2012-06-12 17:30:29.794547493 +0200
@@ -3502,7 +3502,7 @@ zwchar *local_to_wide_string(local_strin
   if ((wc_string = (wchar_t *)malloc((wsize + 1) * sizeof(wchar_t))) == NULL) {
     ZIPERR(ZE_MEM, "local_to_wide_string");
   }
-  wsize = mbstowcs(wc_string, local_string, strlen(local_string) + 1);
+  wsize = mbstowcs(wc_string, local_string, wsize + 1);
   wc_string[wsize] = (wchar_t) 0;
 
   /* in case wchar_t is not zwchar */
diff -dupr zip30-old/zipfile.c zip30/zipfile.c
--- zip30/zipfile.c	2008-07-01 00:15:30.000000000 +0200
+++ zip30/zipfile.c	2012-06-10 01:59:42.571706181 +0200
@@ -5406,6 +5406,8 @@ int putlocal(z, rewrite)
     if (z->flg & UTF8_BIT) {
       /* If this flag is set, then restore UTF-8 as path name */
       use_uname = 1;
+      tempzn -= nam;
       nam = strlen(z->uname);
+      tempzn += nam;
     } else {
       /* use extra field */
       add_Unicode_Path_local_extra_field(z);
@@ -5647,7 +5650,9 @@ int putcentral(z)
     if (z->flg & UTF8_BIT) {
       /* If this flag is set, then restore UTF-8 as path name */
       use_uname = 1;
+      tempzn -= nam;
       nam = strlen(z->uname);
+      tempzn += nam;
     } else {
       add_Unicode_Path_cen_extra_field(z);
     }
diff -dupr zip30/zipnote.c zip30/zipnote.c
--- zip30/zipnote.c	2008-05-08 04:17:08.000000000 +0200
+++ zip30/zipnote.c	2012-06-10 02:33:36.372663528 +0200
@@ -575,6 +575,13 @@ char **argv;            /* command line
       strcpy(z->iname, a+2);
 #endif
 
+#ifdef UNICODE_SUPPORT
+#define UTF8_BIT (1 << 11)
+      if (using_utf8) {
+        z->uname = z->iname;
+      }
+#endif
+
 /*
  * Don't update z->nam here, we need the old value a little later.....
  * The update is handled in zipcopy().
@@ -661,7 +668,7 @@ char **argv;            /* command line
     if ((r = zipcopy(z)) != ZE_OK)
       ziperr(r, "was copying an entry");
   }
-  fclose(x);
+  fclose(in_file);
 
   /* Write central directory and end of central directory with new comments */
   if ((c = zftello(y)) == (zoff_t)-1)    /* get start of central */
