Index: src/io/socket_win32.c =================================================================== --- src/io/socket_win32.c (版本 42982) +++ src/io/socket_win32.c (工作副本) @@ -77,8 +77,8 @@ Parrot_io_socket_win32(PARROT_INTERP, ARGIN(PMC * s), int fam, int type, int proto) { ASSERT_ARGS(Parrot_io_socket_win32) - int sock, i = 1; - sock = socket(fam, type, proto); + int i = 1; + const int sock = socket(fam, type, proto); if (sock >= 0) { setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const char*)&i, sizeof (i)); Parrot_io_set_os_handle(interp, s, sock); @@ -443,10 +443,8 @@ Parrot_io_sockaddr_in(PARROT_INTERP, ARGIN(STRING *addr), INTVAL port) { ASSERT_ARGS(Parrot_io_sockaddr_in) - PMC * sockaddr; - char * s; - - s = Parrot_str_to_cstring(interp, addr); + PMC * sockaddr; + char * const s = Parrot_str_to_cstring(interp, addr); sockaddr = pmc_new(interp, enum_class_Sockaddr); get_sockaddr_in(interp, sockaddr, s, port); Parrot_str_free_cstring(s); Index: src/io/win32.c =================================================================== --- src/io/win32.c (版本 42982) +++ src/io/win32.c (工作副本) @@ -701,8 +701,6 @@ NULL, NULL, TRUE, 0, NULL, NULL, &start, &procinfo) == 0) goto fail; - Parrot_str_free_cstring(cmd); - cmd = NULL; if (f_read) { Parrot_io_set_os_handle(interp, io, hread); CloseHandle(hwrite); @@ -711,6 +709,8 @@ Parrot_io_set_os_handle(interp, io, hwrite); CloseHandle(hread); } + + Parrot_str_free_cstring(cmd); CloseHandle(procinfo.hThread); VTABLE_set_integer_keyed_int(interp, io, 0, (INTVAL)procinfo.hProcess); return io;