0x90

一回休み

emval-rsでのid登録でのnull文字欠如

概要

Rust+val.jsでクロージャを登録するためのtraitである、JSFuncが動かなかった

どう解決したか

  • まずはcargo-testjs

  • 謎のエラー exception thrown: SyntaxError: Unexpected identifier,SyntaxError: Unexpected identifier

  • エラーメッセージからlib.rsのエラー箇所を特定し、console.logデバッグ at craftInvokerFunction ([stdin]:6242:29)

    • embind_register_functionでは無理やりnew Function…で関数を作っているので、そこでエラーが出ていた
      if (returns) {
          invokerFnBody += "var ret = retType.fromWireType(rv);\n" +
                           "return ret;\n";
      } else {
      }
      invokerFnBody += "}\n";

      args1.push(invokerFnBody);

      console.log(invokerFnBody);

      var invokerFunction = new_(Function, args1).apply(null, args2);
      return invokerFunction;
var arg0Wired = argType0.toWireType(null, arg0); // rust_usizerust_u32rust_u16rust_u8rust_f64rust_f32assertion failed: !self.is_empty()assertion failed: !sorted_samples.is_empty()/checkout/src/libtest/stats.rs/checkout/src/libcore/slice/mod.rscapacity overflow/checkout/src/libcollections/vec.rsassertion failed: zero <= pctassertion failed: pct <= hundred/checkout/src/libtest/lib.rsio error when running tests: io error when listing tests: cannot access a TLS value during or after it is destroyedreserve overflowraw_cap overflowraw_capacity overflowinternal error: entered unreachable codeassertion failed: self.passed + self.failed + self.ignored + self.measured == self.total
successes:
  • rust_usizerust_u32rust_u16rust_u8rustのあたりから、どうやら型シグネチャにおけるヌル文字欠如がいけないらしいと推測

    • 言われてみたら当たり前
  • 解決🍺

終わりに

数カ月ぶりの投稿がコレだよ でもメモ書きは大事