@@ -322,21 +322,23 @@ Handle<Value> SecureStream::ReadInject(const Arguments& args) {
322322 String::New (" Second argument should be a buffer" )));
323323 }
324324
325- Buffer * buffer = ObjectWrap::Unwrap<Buffer>(args[0 ]->ToObject ());
325+ Local<Object> buffer_obj = args[0 ]->ToObject ();
326+ char *buffer_data = Buffer::Data (buffer_obj);
327+ size_t buffer_length = Buffer::Length (buffer_obj);
326328
327329 size_t off = args[1 ]->Int32Value ();
328- if (off >= buffer-> length () ) {
330+ if (off >= buffer_length ) {
329331 return ThrowException (Exception::Error (
330332 String::New (" Offset is out of bounds" )));
331333 }
332334
333335 size_t len = args[2 ]->Int32Value ();
334- if (off + len > buffer-> length () ) {
336+ if (off + len > buffer_length ) {
335337 return ThrowException (Exception::Error (
336338 String::New (" Length is extends beyond buffer" )));
337339 }
338340
339- int bytes_written = BIO_write (ss->pbioRead , (char *)buffer-> data () + off, len);
341+ int bytes_written = BIO_write (ss->pbioRead , (char *)buffer_data + off, len);
340342
341343 if (bytes_written < 0 ) {
342344 if (errno == EAGAIN || errno == EINTR ) return Null ();
@@ -362,16 +364,18 @@ Handle<Value> SecureStream::ReadExtract(const Arguments& args) {
362364 String::New (" Second argument should be a buffer" )));
363365 }
364366
365- Buffer * buffer = ObjectWrap::Unwrap<Buffer>(args[0 ]->ToObject ());
367+ Local<Object> buffer_obj = args[0 ]->ToObject ();
368+ char *buffer_data = Buffer::Data (buffer_obj);
369+ size_t buffer_length = Buffer::Length (buffer_obj);
366370
367371 size_t off = args[1 ]->Int32Value ();
368- if (off >= buffer-> length () ) {
372+ if (off >= buffer_length ) {
369373 return ThrowException (Exception::Error (
370374 String::New (" Offset is out of bounds" )));
371375 }
372376
373377 size_t len = args[2 ]->Int32Value ();
374- if (off + len > buffer-> length () ) {
378+ if (off + len > buffer_length ) {
375379 return ThrowException (Exception::Error (
376380 String::New (" Length is extends beyond buffer" )));
377381 }
@@ -393,7 +397,7 @@ Handle<Value> SecureStream::ReadExtract(const Arguments& args) {
393397 return scope.Close (Integer::New (0 ));
394398 }
395399
396- bytes_read = SSL_read (ss->pSSL , (char *)buffer-> data () + off, len);
400+ bytes_read = SSL_read (ss->pSSL , (char *)buffer_data + off, len);
397401 if (bytes_read < 0 ) {
398402 int err = SSL_get_error (ss->pSSL , bytes_read);
399403 if (err == SSL_ERROR_WANT_READ ) {
@@ -445,21 +449,23 @@ Handle<Value> SecureStream::WriteExtract(const Arguments& args) {
445449 String::New (" Second argument should be a buffer" )));
446450 }
447451
448- Buffer * buffer = ObjectWrap::Unwrap<Buffer>(args[0 ]->ToObject ());
452+ Local<Object> buffer_obj = args[0 ]->ToObject ();
453+ char *buffer_data = Buffer::Data (buffer_obj);
454+ size_t buffer_length = Buffer::Length (buffer_obj);
449455
450456 size_t off = args[1 ]->Int32Value ();
451- if (off >= buffer-> length () ) {
457+ if (off >= buffer_length ) {
452458 return ThrowException (Exception::Error (
453459 String::New (" Offset is out of bounds" )));
454460 }
455461
456462 size_t len = args[2 ]->Int32Value ();
457- if (off + len > buffer-> length () ) {
463+ if (off + len > buffer_length ) {
458464 return ThrowException (Exception::Error (
459465 String::New (" Length is extends beyond buffer" )));
460466 }
461467
462- int bytes_read = BIO_read (ss->pbioWrite , (char *)buffer-> data () + off, len);
468+ int bytes_read = BIO_read (ss->pbioWrite , (char *)buffer_data + off, len);
463469
464470 return scope.Close (Integer::New (bytes_read));
465471}
@@ -480,16 +486,18 @@ Handle<Value> SecureStream::WriteInject(const Arguments& args) {
480486 String::New (" Second argument should be a buffer" )));
481487 }
482488
483- Buffer * buffer = ObjectWrap::Unwrap<Buffer>(args[0 ]->ToObject ());
489+ Local<Object> buffer_obj = args[0 ]->ToObject ();
490+ char *buffer_data = Buffer::Data (buffer_obj);
491+ size_t buffer_length = Buffer::Length (buffer_obj);
484492
485493 size_t off = args[1 ]->Int32Value ();
486- if (off >= buffer-> length () ) {
494+ if (off >= buffer_length ) {
487495 return ThrowException (Exception::Error (
488496 String::New (" Offset is out of bounds" )));
489497 }
490498
491499 size_t len = args[2 ]->Int32Value ();
492- if (off + len > buffer-> length () ) {
500+ if (off + len > buffer_length ) {
493501 return ThrowException (Exception::Error (
494502 String::New (" Length is extends beyond buffer" )));
495503 }
@@ -503,7 +511,7 @@ Handle<Value> SecureStream::WriteInject(const Arguments& args) {
503511 }
504512 return scope.Close (Integer::New (0 ));
505513 }
506- int bytes_written = SSL_write (ss->pSSL , (char *)buffer-> data () + off, len);
514+ int bytes_written = SSL_write (ss->pSSL , (char *)buffer_data + off, len);
507515
508516 return scope.Close (Integer::New (bytes_written));
509517}
@@ -1001,8 +1009,11 @@ class Cipher : public ObjectWrap {
10011009 unsigned char *out=0 ;
10021010 int out_len=0 ;
10031011 if (Buffer::HasInstance (args[0 ])) {
1004- Buffer *buffer = ObjectWrap::Unwrap<Buffer>(args[0 ]->ToObject ());
1005- int r = cipher->CipherUpdate (buffer->data (), buffer->length (), &out, &out_len);
1012+ Local<Object> buffer_obj = args[0 ]->ToObject ();
1013+ char *buffer_data = Buffer::Data (buffer_obj);
1014+ size_t buffer_length = Buffer::Length (buffer_obj);
1015+
1016+ int r = cipher->CipherUpdate (buffer_data, buffer_length, &out, &out_len);
10061017 } else {
10071018 char * buf = new char [len];
10081019 ssize_t written = DecodeWrite (buf, len, args[0 ], enc);
@@ -1344,9 +1355,12 @@ class Decipher : public ObjectWrap {
13441355 // if alloc_buf then buf must be deleted later
13451356 bool alloc_buf = false ;
13461357 if (Buffer::HasInstance (args[0 ])) {
1347- Buffer *buffer = ObjectWrap::Unwrap<Buffer>(args[0 ]->ToObject ());
1348- buf = buffer->data ();
1349- len = buffer->length ();
1358+ Local<Object> buffer_obj = args[0 ]->ToObject ();
1359+ char *buffer_data = Buffer::Data (buffer_obj);
1360+ size_t buffer_length = Buffer::Length (buffer_obj);
1361+
1362+ buf = buffer_data;
1363+ len = buffer_length;
13501364 } else {
13511365 alloc_buf = true ;
13521366 buf = new char [len];
@@ -1664,8 +1678,11 @@ class Hmac : public ObjectWrap {
16641678 }
16651679
16661680 if ( Buffer::HasInstance (args[0 ])) {
1667- Buffer *buffer = ObjectWrap::Unwrap<Buffer>(args[0 ]->ToObject ());
1668- int r = hmac->HmacUpdate (buffer->data (), buffer->length ());
1681+ Local<Object> buffer_obj = args[0 ]->ToObject ();
1682+ char *buffer_data = Buffer::Data (buffer_obj);
1683+ size_t buffer_length = Buffer::Length (buffer_obj);
1684+
1685+ int r = hmac->HmacUpdate (buffer_data, buffer_length);
16691686 } else {
16701687 char * buf = new char [len];
16711688 ssize_t written = DecodeWrite (buf, len, args[0 ], enc);
@@ -1811,8 +1828,11 @@ class Hash : public ObjectWrap {
18111828
18121829
18131830 if (Buffer::HasInstance (args[0 ])) {
1814- Buffer *buffer = ObjectWrap::Unwrap<Buffer>(args[0 ]->ToObject ());
1815- int r = hash->HashUpdate (buffer->data (), buffer->length ());
1831+ Local<Object> buffer_obj = args[0 ]->ToObject ();
1832+ char *buffer_data = Buffer::Data (buffer_obj);
1833+ size_t buffer_length = Buffer::Length (buffer_obj);
1834+
1835+ int r = hash->HashUpdate (buffer_data, buffer_length);
18161836 } else {
18171837 char * buf = new char [len];
18181838 ssize_t written = DecodeWrite (buf, len, args[0 ], enc);
@@ -1981,8 +2001,11 @@ class Sign : public ObjectWrap {
19812001 }
19822002
19832003 if (Buffer::HasInstance (args[0 ])) {
1984- Buffer *buffer = ObjectWrap::Unwrap<Buffer>(args[0 ]->ToObject ());
1985- int r = sign->SignUpdate (buffer->data (), buffer->length ());
2004+ Local<Object> buffer_obj = args[0 ]->ToObject ();
2005+ char *buffer_data = Buffer::Data (buffer_obj);
2006+ size_t buffer_length = Buffer::Length (buffer_obj);
2007+
2008+ int r = sign->SignUpdate (buffer_data, buffer_length);
19862009 } else {
19872010 char * buf = new char [len];
19882011 ssize_t written = DecodeWrite (buf, len, args[0 ], enc);
@@ -2180,8 +2203,11 @@ class Verify : public ObjectWrap {
21802203 }
21812204
21822205 if (Buffer::HasInstance (args[0 ])) {
2183- Buffer *buffer = ObjectWrap::Unwrap<Buffer>(args[0 ]->ToObject ());
2184- int r = verify->VerifyUpdate (buffer->data (), buffer->length ());
2206+ Local<Object> buffer_obj = args[0 ]->ToObject ();
2207+ char *buffer_data = Buffer::Data (buffer_obj);
2208+ size_t buffer_length = Buffer::Length (buffer_obj);
2209+
2210+ int r = verify->VerifyUpdate (buffer_data, buffer_length);
21852211 } else {
21862212 char * buf = new char [len];
21872213 ssize_t written = DecodeWrite (buf, len, args[0 ], enc);
0 commit comments