I definetelly shoot myself in my leg somewhere

when i change code like that

HandleScope scope;
Local<Value> js_field = Local<Value>::New(Null());

....

js_field = String::New((const char*)(vary2->vary_string));
...
return scope.Close(js_field);

to code like that

HandleScope scope;
Local<Value> js_field = Local<Value>::New(Null());
....
Buffer *slowBuffer = Buffer::New(vary2->vary_length);
memcpy(Buffer::Data(slowBuffer), (const char*)(vary2->vary_string),
vary2->vary_length);
Local<Object> globalObj = Context::GetCurrent()->Global();
Local<Function> bufferConstructor =
Local<Function>::Cast(globalObj->Get(String::New("Buffer")));
Handle<Value> constructorArgs[3] = { slowBuffer->handle_,
Integer::New(vary2->vary_length), Integer::New(0) };
js_field = bufferConstructor->NewInstance(3, constructorArgs);
...
return scope.Close(js_field);

i.e. returns Buffer instead of String.
Node strarts to fall with segmentation fault unconditionally. I call that
method in a loop. The problem may appear after 100 iterations or after
10000. The input data are same for both cases.
Am I doing something wrong?


2012/6/5 Denys Khanzhiyev <[email protected]>

> gdb --args ./node_g ../node_firebird/issues/issue10.js
> GNU gdb (GDB) CentOS (7.0.1-42.el5.centos)
> Copyright (C) 2009 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later <
> http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "i386-redhat-linux-gnu".
> For bug reporting instructions, please see:
> <http://www.gnu.org/software/gdb/bugs/>...
> Reading symbols from /root/node/node_g...(no debugging symbols
> found)...done.
>
> Trying to catch segfault and all I get in backtrace
>
> Program received signal SIGSEGV, Segmentation fault.
> 0x578bbeaa in ?? ()
> (gdb) backtrace
> #0  0x578bbeaa in ?? ()
> #1  0x4aaeb361 in ?? ()
> #2  0x478517a1 in ?? ()
> #3  0x578bbe61 in ?? ()
> #4  0x0000000c in ?? ()
> #5  0x578acf46 in ?? ()
> #6  0x00000000 in ?? ()
>
> ]# ./node_g -v
> v0.6.13
>
> built with
>  ./configure --debug
> make
>
> any help?
>
> Thank you!
>

-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

Reply via email to