]> granicus.if.org Git - php/commitdiff
fix possible null dereference
authorAnatol Belski <ab@php.net>
Wed, 21 Dec 2016 16:58:34 +0000 (17:58 +0100)
committerAnatol Belski <ab@php.net>
Wed, 21 Dec 2016 16:58:34 +0000 (17:58 +0100)
win32/codepage.c

index 519ff03f4ba1e020a547780221de197803b78b85..0cedda8f71ef880968bdafdaf21d0fc6d79bb290 100644 (file)
@@ -498,16 +498,18 @@ PW32CP const struct php_win32_cp *php_win32_cp_cli_do_setup(DWORD id)
 
 PW32CP const struct php_win32_cp *php_win32_cp_cli_do_restore(DWORD id)
 {/*{{{*/
-       if (!id && orig_cp) {
-               id = orig_cp->id;
+       BOOL cli_io_restored = TRUE;
+
+       if (orig_in_cp) {
+               cli_io_restored = cli_io_restored && SetConsoleCP(orig_in_cp->id);
        }
 
-       if (SetConsoleCP(orig_in_cp->id) && SetConsoleOutputCP(orig_out_cp->id)) {
-               if (orig_cp) {
-                       return orig_cp;
-               } else {
-                       return php_win32_cp_set_by_id(id);
-               }
+       if (orig_out_cp) {
+               cli_io_restored = cli_io_restored && SetConsoleOutputCP(orig_out_cp->id);
+       }
+
+       if (cli_io_restored && id) {
+               return php_win32_cp_set_by_id(id);
        }
 
        return NULL;