]> Nishi Git Mirror - gwion.git/commitdiff
:bug: Fix fptr sporked call
authorfennecdjay <astor.jeremie@wanadoo.fr>
Fri, 3 May 2019 12:22:36 +0000 (14:22 +0200)
committerfennecdjay <astor.jeremie@wanadoo.fr>
Fri, 3 May 2019 12:22:36 +0000 (14:22 +0200)
src/emit/emit.c
src/parse/scan1.c

index bdc439d97494a5ea82caeea5b96b2c62511c3fdb..d0b548587c944dfba20826106845ecfdd25953a8 100644 (file)
@@ -857,7 +857,8 @@ ANN m_bool emit_exp_call1(const Emitter emit, const Func f) {
     if((f_instr)(m_uint)back->opcode == DotFunc || (f_instr)(m_uint)back->opcode == DotStaticFunc)
       back->m_val = f->vt_index;
   }
-  if(GET_FLAG(f, member) && isa(actual_type(f->value_ref->type), t_fptr) > 0) {
+  if(vector_size(&emit->code->instr) && GET_FLAG(f, member) &&
+        isa(actual_type(f->value_ref->type), t_fptr) > 0) {
     const Instr back = (Instr)vector_back(&emit->code->instr);
     m_bit exec = back->opcode;
     m_uint val = back->m_val;
index e0c957d9e6bc16aa5adc689d11a5cf63dfd79ce6..49bca396ead94332f0219f249d0c99feb125b7d6 100644 (file)
 #include "parse.h"
 #include "traverse.h"
 
-ANN m_bool scan0_class_def(const Env, const Class_Def);
-ANN /* static */ m_bool scan1_exp(const Env env, Exp exp);
 ANN static m_bool scan1_stmt_list(const Env env, Stmt_List list);
-ANN m_bool scan1_class_def(const Env, const Class_Def);
 ANN static m_bool scan1_stmt(const Env env, Stmt stmt);
 
 ANN static Type void_type(const Env env, const Type_Decl* td) {
@@ -44,8 +41,7 @@ ANN static Type scan1_exp_decl_type(const Env env, Exp_Decl* decl) {
     }
   }
   decl->base = t->def;
-  decl->type = t;
-  return t;
+  return decl->type = t;
 }
 
 ANN m_bool scan1_exp_decl(const Env env, const Exp_Decl* decl) {