From 2b2c957719831d1abc4530360e23945ce18f1ffd Mon Sep 17 00:00:00 2001
From: Virgile Prevosto <virgile.prevosto@m4x.org>
Date: Tue, 20 Feb 2024 16:28:46 +0100
Subject: [PATCH] [ir2cabs] define wchar_t in C when it appears in C++ code

---
 convert.ml                                    | 24 +++++++++----------
 tests/basic/oracle/placement_new.res.oracle   |  1 +
 tests/basic/oracle/placement_newb.res.oracle  |  1 +
 .../stl_shared_ptr_mistake10.res.oracle       |  1 +
 .../oracle/stl_shared_ptr_mistake5.res.oracle |  1 +
 .../oracle/stl_shared_ptr_mistake6.res.oracle |  1 +
 tests/stl/oracle/stl_system_error.res.oracle  |  1 +
 7 files changed, 18 insertions(+), 12 deletions(-)

diff --git a/convert.ml b/convert.ml
index 50c629a2..02055430 100644
--- a/convert.ml
+++ b/convert.ml
@@ -2146,21 +2146,21 @@ and convert_init_statement env init does_remove_virtual =
           let env = Convert_env.add_local_var env id_name typ.plain_type in
           match init_val with
           | None ->
-	    let init = (id_name, decl JUSTBASE,[],loc),NO_INIT in
-	    (env, aux, init::l, def, base)
+      let init = (id_name, decl JUSTBASE,[],loc),NO_INIT in
+      (env, aux, init::l, def, base)
           | Some init ->
             let var = Local { prequalification = []; decl_name = id_name } in
             let env,aux',init, def' =
               convert_initializer env typ var init does_remove_virtual
             in
-	    let def = match def' with
-	      | None -> def
-	      | Some stmt -> stmt::def
-	    in
-	    let init = (id_name, decl JUSTBASE,attrs,loc),init in
-	    env, merge_aux aux' aux, init::l, def, base)
-	init_declarator_list
-	(env, empty_aux, [], [], None)
+      let def = match def' with
+        | None -> def
+        | Some stmt -> stmt::def
+      in
+      let init = (id_name, decl JUSTBASE,attrs,loc),init in
+      env, merge_aux aux' aux, init::l, def, base)
+  init_declarator_list
+  (env, empty_aux, [], [], None)
     in
     let l = List.rev l in
     if l = [] then
@@ -2776,8 +2776,8 @@ let iter_on_array ?(incr=true) env idx length mk_body =
   let init =
     if incr then const_int 0
     else BINARY(SUB, length,
-		{expr_loc=loc;
-		 expr_node=const_int 1})
+    {expr_loc=loc;
+    expr_node=const_int 1})
   in
   let last = if incr then length.expr_node else const_int 0 in
   let last_test = if incr then LT else GE in
diff --git a/tests/basic/oracle/placement_new.res.oracle b/tests/basic/oracle/placement_new.res.oracle
index f1b04d62..8b784187 100644
--- a/tests/basic/oracle/placement_new.res.oracle
+++ b/tests/basic/oracle/placement_new.res.oracle
@@ -40,6 +40,7 @@ struct __fc_lldiv_t {
    long long rem ;
 };
 typedef struct __fc_lldiv_t lldiv_t;
+typedef long wchar_t;
 typedef size_t size_t;
 struct T;
 struct T {
diff --git a/tests/basic/oracle/placement_newb.res.oracle b/tests/basic/oracle/placement_newb.res.oracle
index 39905324..86182e2a 100644
--- a/tests/basic/oracle/placement_newb.res.oracle
+++ b/tests/basic/oracle/placement_newb.res.oracle
@@ -18,6 +18,7 @@ struct __fc_lldiv_t {
    long long rem ;
 };
 typedef struct __fc_lldiv_t lldiv_t;
+typedef long wchar_t;
 void *malloc(size_t size);
 
 void free(void *p);
diff --git a/tests/stl/oracle/stl_shared_ptr_mistake10.res.oracle b/tests/stl/oracle/stl_shared_ptr_mistake10.res.oracle
index a98a8a7e..8e003162 100644
--- a/tests/stl/oracle/stl_shared_ptr_mistake10.res.oracle
+++ b/tests/stl/oracle/stl_shared_ptr_mistake10.res.oracle
@@ -116,6 +116,7 @@ struct __fc_lldiv_t {
    long long rem ;
 };
 typedef struct __fc_lldiv_t lldiv_t;
+typedef long wchar_t;
 struct Aircraft {
    int m_id ;
    int m_flyCount ;
diff --git a/tests/stl/oracle/stl_shared_ptr_mistake5.res.oracle b/tests/stl/oracle/stl_shared_ptr_mistake5.res.oracle
index 540339c4..ac849396 100644
--- a/tests/stl/oracle/stl_shared_ptr_mistake5.res.oracle
+++ b/tests/stl/oracle/stl_shared_ptr_mistake5.res.oracle
@@ -113,6 +113,7 @@ struct __fc_lldiv_t {
    long long rem ;
 };
 typedef struct __fc_lldiv_t lldiv_t;
+typedef long wchar_t;
 struct Aircraft {
    int m_id ;
    int m_flyCount ;
diff --git a/tests/stl/oracle/stl_shared_ptr_mistake6.res.oracle b/tests/stl/oracle/stl_shared_ptr_mistake6.res.oracle
index 474773e2..25559b64 100644
--- a/tests/stl/oracle/stl_shared_ptr_mistake6.res.oracle
+++ b/tests/stl/oracle/stl_shared_ptr_mistake6.res.oracle
@@ -114,6 +114,7 @@ struct __fc_lldiv_t {
    long long rem ;
 };
 typedef struct __fc_lldiv_t lldiv_t;
+typedef long wchar_t;
 struct Aircraft {
    int m_id ;
    int m_flyCount ;
diff --git a/tests/stl/oracle/stl_system_error.res.oracle b/tests/stl/oracle/stl_system_error.res.oracle
index 27e8e63f..a33d8294 100644
--- a/tests/stl/oracle/stl_system_error.res.oracle
+++ b/tests/stl/oracle/stl_system_error.res.oracle
@@ -104,6 +104,7 @@ struct tm {
    int tm_yday ;
    int tm_isdst ;
 };
+typedef long wchar_t;
 typedef char char_type;
 typedef wchar_t char_type;
 struct __shared_ref_base;
-- 
GitLab