Guest User

Untitled

a guest
May 26th, 2018
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.64 KB | None | 0 0
  1. From 9d9f31ed8d8e9fb556e15363caf410cdc27c3c54 Mon Sep 17 00:00:00 2001
  2. From: Ryan Dahl <ry@tinyclouds.org>
  3. Date: Wed, 19 May 2010 17:45:21 -0700
  4. Subject: [PATCH] Fix HandleScopes
  5.  
  6. ---
  7. binding.cc | 25 +++++++++++++++++--------
  8. 1 files changed, 17 insertions(+), 8 deletions(-)
  9.  
  10. diff --git a/binding.cc b/binding.cc
  11. index ffec828..591c3cc 100644
  12. --- a/binding.cc
  13. +++ b/binding.cc
  14. @@ -36,6 +36,7 @@ pcap_t *pcap_handle;
  15. Buffer *buffer;
  16.  
  17. void packet_ready(u_char *callback_p, const struct pcap_pkthdr* pkthdr, const u_char* packet) {
  18. + HandleScope scope;
  19. static int count = 1;
  20. // fprintf(stderr, "packet no: %d, %ld.%d, length: %d\n", count, pkthdr->ts.tv_sec, pkthdr->ts.tv_usec, pkthdr->len);
  21. // fflush(stderr);
  22. @@ -114,6 +115,8 @@ int open_live(char *dev, char *filter, char *errbuf) {
  23. Handle<Value>
  24. Dispatch(const Arguments& args)
  25. {
  26. + HandleScope scope;
  27. +
  28. if (args.Length() != 2) {
  29. return ThrowException(Exception::TypeError(String::New("Dispatch takes exactly two arguments")));
  30. }
  31. @@ -132,7 +135,7 @@ Handle<Value>
  32.  
  33. int packet_count = pcap_dispatch(pcap_handle, 1, packet_ready, (u_char *)&callback);
  34.  
  35. - return Integer::NewFromUnsigned(packet_count);
  36. + return scope.Close(Integer::NewFromUnsigned(packet_count));
  37. }
  38.  
  39. Handle<Value>
  40. @@ -152,16 +155,22 @@ Handle<Value>
  41.  
  42. int link_type = pcap_datalink(pcap_handle);
  43.  
  44. + Local<Value> ret;
  45. switch (link_type) {
  46. case DLT_NULL:
  47. - return String::New("LINKTYPE_NULL");
  48. + ret = String::New("LINKTYPE_NULL");
  49. + break;
  50. case DLT_EN10MB:
  51. - return String::New("LINKTYPE_ETHERNET");
  52. + ret = String::New("LINKTYPE_ETHERNET");
  53. + break;
  54. case DLT_IEEE802_11:
  55. - return String::New("LINKTYPE_IEEE802_11");
  56. + ret = String::New("LINKTYPE_IEEE802_11");
  57. + break;
  58. default:
  59. - return String::New("Unknown");
  60. + ret = String::New("Unknown");
  61. + break;
  62. }
  63. + return scope.Close(ret);
  64. }
  65.  
  66. Handle<Value>
  67. @@ -221,7 +230,7 @@ Handle<Value>
  68. }
  69.  
  70. pcap_freealldevs(alldevsp);
  71. - return DevsArray;
  72. + return scope.Close(DevsArray);
  73. }
  74.  
  75. Handle<Value>
  76. @@ -241,7 +250,7 @@ Handle<Value>
  77.  
  78. int fd = pcap_get_selectable_fd(pcap_handle);
  79.  
  80. - return Integer::NewFromUnsigned(fd);
  81. + return scope.Close(Integer::NewFromUnsigned(fd));
  82. }
  83.  
  84. Handle<Value>
  85. @@ -262,7 +271,7 @@ Handle<Value>
  86. stats_obj->Set(String::New("ps_drop"), Integer::NewFromUnsigned(ps.ps_drop));
  87. stats_obj->Set(String::New("ps_ifdrop"), Integer::NewFromUnsigned(ps.ps_ifdrop));
  88.  
  89. - return stats_obj;
  90. + return scope.Close(stats_obj);
  91. }
  92.  
  93. extern "C" void init (Handle<Object> target)
  94. --
  95. 1.6.6
Add Comment
Please, Sign In to add comment