--- src/misc/win32_specific.c	Sat Sep 29 15:15:41 2007
+++ src/misc/win32_specific.c	Sun Sep 30 18:01:18 2007
@@ -218,7 +218,7 @@
                 COPYDATASTRUCT wm_data;
                 int i_opt;
                 vlc_ipc_data_t *p_data;
-                size_t i_data = sizeof (p_data);
+                size_t i_data = sizeof (vlc_ipc_data_t);
 
                 for( i_opt = optind; i_opt < *pi_argc; i_opt++ )
                 {
@@ -235,11 +235,12 @@
                     size_t i_len = strlen( ppsz_argv[ i_opt ] ) + 1;
                     /* Windows will never switch to an architecture
                      * with stronger alignment requirements, right. */
-                    *((size_t *)(p_data->data + i_data)) = i_len;
+                    *((size_t *)(&p_data->data[i_data])) = i_len;
                     i_data += sizeof (size_t);
-                    memcpy( &p_data[i_data], ppsz_argv[ i_opt ], i_len );
+                    memcpy( &p_data->data[i_data], ppsz_argv[ i_opt ], i_len );
                     i_data += i_len;
                 }
+                i_data += sizeof (vlc_ipc_data_t);
 
                 /* Send our playlist items to the 1st instance */
                 wm_data.dwData = 0;
@@ -321,8 +322,8 @@
             ppsz_argv = (char **)malloc( i_argc * sizeof(char *) );
             for( i_opt = 0; i_opt < i_argc; i_opt++ )
             {
-                ppsz_argv[i_opt] = &p_data[i_data + sizeof(int)];
-                i_data += *((int *)&p_data[i_data]);
+                ppsz_argv[i_opt] = &p_data->data[i_data + sizeof(int)];
+                i_data += *((int *)&p_data->data[i_data]);
                 i_data += sizeof(int);
             }
 
