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++ { | ||||
| 			args << string_from_wide(&u16(args_list[i])) | ||||
| 		} | ||||
| 
 | ||||
| 		C.LocalFree(args_list) | ||||
| 	} $else { | ||||
| 		for i := 0; i < argc; i++ { | ||||
| 			args << string(argv[i]) | ||||
|  | @ -520,7 +522,7 @@ pub fn get_line() string { | |||
| pub fn get_raw_line() string { | ||||
| 	$if windows { | ||||
| 		max := 512 // MAX_PATH * sizeof(wchar_t)
 | ||||
| 		buf := &u16(malloc(max)) | ||||
| 		buf := &u16(malloc(max*2)) | ||||
| 		h_input := C.GetStdHandle(STD_INPUT_HANDLE) | ||||
| 		if h_input == INVALID_HANDLE_VALUE { | ||||
| 			panic('get_raw_line() error getting input handle.') | ||||
|  | @ -658,8 +660,9 @@ pub fn executable() string { | |||
| 		return string(result, count) | ||||
| 	} | ||||
| 	$if windows { | ||||
| 		mut result := &u16(malloc(512)) // MAX_PATH * sizeof(wchar_t)
 | ||||
| 		len := int(C.GetModuleFileName( 0, result, MAX_PATH )) | ||||
| 		max := 512 | ||||
| 		mut result := &u16(malloc(max*2)) // MAX_PATH * sizeof(wchar_t)
 | ||||
| 		len := int(C.GetModuleFileName( 0, result, max )) | ||||
| 		return string_from_wide2(result, len) | ||||
| 	} | ||||
| 	$if mac { | ||||
|  | @ -731,9 +734,9 @@ pub fn chdir(path string) { | |||
| 
 | ||||
| pub fn getwd() string {	 | ||||
| 	$if windows { | ||||
| 		max := 1024 // MAX_PATH * sizeof(wchar_t)
 | ||||
| 		buf := &u16(malloc(max)) | ||||
| 		if C._wgetcwd(buf, max/2) == 0 { | ||||
| 		max := 512 // MAX_PATH * sizeof(wchar_t)
 | ||||
| 		buf := &u16(malloc(max*2)) | ||||
| 		if C._wgetcwd(buf, max) == 0 { | ||||
| 			return '' | ||||
| 		} | ||||
| 		return string_from_wide(buf) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue