* v8 :: String :: Utf8Value (args [0] & # 8594; ToString ()) does not return the string of the addon argument node.js

I found that * v8 :: String :: Utf8Value (args [0] → ToString ()) returns the correct string on node 0.8.2 32-bit and does not return the correct string in node 0.8.8 64-bit.

Does anyone understand why?

My node.js addon looks like this:

#define BUILDING_NODE_EXTENSION
#include <node.h>

#define MAX_OUTPUT_BUF  80
extern "C" char *do_sqlsig(char *in);

using namespace v8;

Handle<Value> Sqlsig(const Arguments& args) {
 HandleScope scope;
 char *c_arg, *ret;

 if (args.Length() < 1) {
   ThrowException(Exception::TypeError(String::New("Wrong number of arguments")));
   return scope.Close(Undefined());
 }

 c_arg = *v8::String::Utf8Value(args[0]->ToString());

 ret = c_arg; //do_sqlsig(c_arg);

 return scope.Close(String::New(ret));
}

void Init(Handle<Object> exports) {
  exports->Set(String::NewSymbol("sqlsig"),
      FunctionTemplate::New(Sqlsig)->GetFunction());
}

NODE_MODULE(sqlsig, Init)

As you can see, I am writing a wrapper for the C function, do_sqlsig. I know C very well and know little about C ++

+5
source share
1 answer

, , *v8::String::Utf8Value(args[0]->ToString());, , ( Utf8Value ). Utf8Value . undefined .

, , Utf8Value .

v8::String::Utf8Value str(args[0]->ToString());
c_arg = *str;
+9

All Articles