os: Make windows allocations more consistent & LocalFree args_list
if max is 512 then allocate `max * sizeof(wchar_t)`pull/1299/head
							parent
							
								
									f8bc893972
								
							
						
					
					
						commit
						ca70d1f8a3
					
				
							
								
								
									
										15
									
								
								vlib/os/os.v
								
								
								
								
							
							
						
						
									
										15
									
								
								vlib/os/os.v
								
								
								
								
							|  | @ -100,6 +100,8 @@ fn init_os_args(argc int, argv *byteptr) []string { | ||||||
| 		for i := 0; i < args_count; i++ { | 		for i := 0; i < args_count; i++ { | ||||||
| 			args << string_from_wide(&u16(args_list[i])) | 			args << string_from_wide(&u16(args_list[i])) | ||||||
| 		} | 		} | ||||||
|  | 
 | ||||||
|  | 		C.LocalFree(args_list) | ||||||
| 	} $else { | 	} $else { | ||||||
| 		for i := 0; i < argc; i++ { | 		for i := 0; i < argc; i++ { | ||||||
| 			args << string(argv[i]) | 			args << string(argv[i]) | ||||||
|  | @ -520,7 +522,7 @@ pub fn get_line() string { | ||||||
| pub fn get_raw_line() string { | pub fn get_raw_line() string { | ||||||
| 	$if windows { | 	$if windows { | ||||||
| 		max := 512 // MAX_PATH * sizeof(wchar_t)
 | 		max := 512 // MAX_PATH * sizeof(wchar_t)
 | ||||||
| 		buf := &u16(malloc(max)) | 		buf := &u16(malloc(max*2)) | ||||||
| 		h_input := C.GetStdHandle(STD_INPUT_HANDLE) | 		h_input := C.GetStdHandle(STD_INPUT_HANDLE) | ||||||
| 		if h_input == INVALID_HANDLE_VALUE { | 		if h_input == INVALID_HANDLE_VALUE { | ||||||
| 			panic('get_raw_line() error getting input handle.') | 			panic('get_raw_line() error getting input handle.') | ||||||
|  | @ -658,8 +660,9 @@ pub fn executable() string { | ||||||
| 		return string(result, count) | 		return string(result, count) | ||||||
| 	} | 	} | ||||||
| 	$if windows { | 	$if windows { | ||||||
| 		mut result := &u16(malloc(512)) // MAX_PATH * sizeof(wchar_t)
 | 		max := 512 | ||||||
| 		len := int(C.GetModuleFileName( 0, result, MAX_PATH )) | 		mut result := &u16(malloc(max*2)) // MAX_PATH * sizeof(wchar_t)
 | ||||||
|  | 		len := int(C.GetModuleFileName( 0, result, max )) | ||||||
| 		return string_from_wide2(result, len) | 		return string_from_wide2(result, len) | ||||||
| 	} | 	} | ||||||
| 	$if mac { | 	$if mac { | ||||||
|  | @ -731,9 +734,9 @@ pub fn chdir(path string) { | ||||||
| 
 | 
 | ||||||
| pub fn getwd() string {	 | pub fn getwd() string {	 | ||||||
| 	$if windows { | 	$if windows { | ||||||
| 		max := 1024 // MAX_PATH * sizeof(wchar_t)
 | 		max := 512 // MAX_PATH * sizeof(wchar_t)
 | ||||||
| 		buf := &u16(malloc(max)) | 		buf := &u16(malloc(max*2)) | ||||||
| 		if C._wgetcwd(buf, max/2) == 0 { | 		if C._wgetcwd(buf, max) == 0 { | ||||||
| 			return '' | 			return '' | ||||||
| 		} | 		} | ||||||
| 		return string_from_wide(buf) | 		return string_from_wide(buf) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue