]> Nishi Git Mirror - gwion.git/commitdiff
:art: Coverity fixes
authorJérémie Astor <astor.jeremie@wanadoo.fr>
Tue, 26 Nov 2019 23:47:36 +0000 (00:47 +0100)
committerJérémie Astor <astor.jeremie@wanadoo.fr>
Tue, 26 Nov 2019 23:47:36 +0000 (00:47 +0100)
ast
src/import/cdef.c
src/import/oper.c
src/import/type.c
src/import/udef.c
src/lib/tuple.c
src/plug.c

diff --git a/ast b/ast
index 0c6c6dcd949db0aeb7f292c22411381fb68624f5..1bf20cade4401334d94195cd9b245743a1ba096e 160000 (submodule)
--- a/ast
+++ b/ast
@@ -1 +1 @@
-Subproject commit 0c6c6dcd949db0aeb7f292c22411381fb68624f5
+Subproject commit 1bf20cade4401334d94195cd9b245743a1ba096e
index abf8d2ec0e1bd224743e9affdd7c1f8b4fd5f0bb..eddfa2963122cb4c5d05203bbc468f782d4b8f8b 100644 (file)
@@ -60,7 +60,7 @@ ANN static Type type_finish(const Gwi gwi, const Type t) {
 ANN2(1,2) Type gwi_class_ini(const Gwi gwi, const m_str name, const m_str parent) {
   struct ImportCK ck = { .name=name };
   CHECK_BO(check_typename_def(gwi, &ck))
-  Type_Decl *td = str2decl(gwi, parent ?: "Object"); // check
+  DECL_OO(Type_Decl *,td, = str2decl(gwi, parent ?: "Object"))
   Tmpl* tmpl = ck.tmpl ? new_tmpl_base(gwi->gwion->mp, ck.tmpl) : NULL;
   if(tmpl)
     template_push_types(gwi->gwion->env, tmpl);
index b95717088d3df87bb3b5e6c308c76b5a073f162a..7e28045361614d41566f1c5bf91ea2d0e6dd4f00 100644 (file)
@@ -20,7 +20,7 @@ ANN static Type _get_type(const Gwi gwi, const m_str str) {
   if(str == (m_str)OP_ANY_TYPE)
     return OP_ANY_TYPE;
   struct array_checker ck = { .str=str };
-  const ID_List list = ck2list(gwi, &ck);
+  DECL_OO(const ID_List, list, = ck2list(gwi, &ck))
   const Type t = find_type(gwi->gwion->env, list);
   if(list)
     free_id_list(gwi->gwion->mp, list);
index af6e68e0cff4165723809ac9281751f4b457d805..2e9e4c0d9520c723e101ea138f55aad64d9064ef 100644 (file)
 #include "import.h"
 #include "gwi.h"
 
-ANN2(1,2) Type gwi_mk_type(const Gwi gwi NUSED, const m_str name, const m_uint size, const m_str parent_name) {
-  CHECK_OO(str2sym(gwi, name))
+ANN2(1) static Type get_parent(const Gwi gwi, const m_str parent_name) {
   Type_Decl* td = parent_name ? str2decl(gwi, parent_name) : NULL;
   if(td) {
     if(td->array || td->types) {
+      const m_str str = td->array ? "array" : "template";
       free_type_decl(gwi->gwion->mp, td);
-      GWI_ERR_O(_("can't use gwi_mk_type to extend %s types"),
-        td->array ? "array" : "template")
+      GWI_ERR_O(_("can't use gwi_mk_type to extend %s types"), str)
     }
   }
   const Type parent = td ? known_type(gwi->gwion->env, td) : NULL;
+  if(td)
+    free_type_decl(gwi->gwion->mp, td);
+  return parent;
+}
+
+ANN2(1,2) Type gwi_mk_type(const Gwi gwi, const m_str name, const m_uint size, const m_str parent_name) {
+  CHECK_OO(str2sym(gwi, name))
+  const Type parent = get_parent(gwi, parent_name);
   const Type t = new_type(gwi->gwion->mp, 0, name, parent);
   t->size = size;
   return t;
index 2b052f624b9f5faadcb7e743e56cd946226349fc..4f5e2276784d62684368ee6a42e6b9df94beaf7a 100644 (file)
@@ -63,16 +63,14 @@ ANN Type gwi_union_end(const Gwi gwi, const ae_flag flag) {
   CHECK_BO(ck_ok(gwi, ck_udef))
   if(!gwi->ck->list)
     GWI_ERR_O(_("union is empty"));
+  if(gwi->ck->tmpl && gwi->ck->xid)
+    GWI_ERR_O(_("Template union type can't declare instance at declaration"));
   const Union_Def udef = new_union_def(gwi->gwion->mp, gwi->ck->list, loc(gwi));
   gwi->ck->list = NULL;
   udef->flag = flag;
   udef->xid = gwi->ck->xid;
   udef->type_xid = gwi->ck->sym;
-//  udef->xid = gwi->ck->sym;
-//  udef->type_xid = gwi->ck->xid;
   if(gwi->ck->tmpl) {
-    if(udef->xid)
-      GWI_ERR_O(_("Template union type can't declare instance at declaration"));
     udef->tmpl = gwi_tmpl(gwi);
     gwi->ck->tmpl = NULL;
   }
@@ -88,5 +86,4 @@ ANN void ck_clean_udef(MemPool mp, ImportCK* ck) {
     free_decl_list(mp, ck->list);
   if(ck->tmpl)
     free_id_list(mp, ck->tmpl);
-// do we miss ck->td ?
 }
index 994007dc94380f0a18bd2b79cd3e1da3cca505b6..be60b75458b8c6e4ddde5c7468447e9395a6ed1e 100644 (file)
@@ -140,8 +140,9 @@ static OP_CHECK(opck_at_tuple) {
         e->d.exp_decl.td->xid->xid = insert_symbol(t->name);
         const Exp next = e->next;
         e->next = NULL;
-        CHECK_BO(traverse_exp(env, e))
+        const m_bool ret = traverse_exp(env, e);
         e->next = next;
+        CHECK_BO(ret)
         bin->rhs->meta = ae_meta_var;
       }
       ++i;
index dbfd0452ac1ed1a4e3e7f7e5a2011ac7aed5e389..d3a626fdc7d1f0ed79b452f435825cf771a1b575 100644 (file)
@@ -84,9 +84,9 @@ ANN static inline m_str plug_name(struct PlugHandle *h) {
 }
 
 ANN static void plug_get(struct PlugHandle *h, const m_str c) {
-  void* dl = DLOPEN(c, RTLD_LAZY | RTLD_GLOBAL);
-  if(dl) {
-    vector_add(&h->pi->vec[GWPLUG_DL], (vtype)dl);
+  h->dl = DLOPEN(c, RTLD_LAZY | RTLD_GLOBAL);
+  if(h->dl) {
+    vector_add(&h->pi->vec[GWPLUG_DL], (vtype)h->dl);
     h->name = plug_name(h);
     plug_import(h);
     plug_module(h);