winevt_c 0.4.6 → 0.4.7.rc

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8e35c2969b85874f8a795430b9ce36b6a8d7e6622ec5d9e3924d65ff3171095d
4
- data.tar.gz: 0c7008c5273f506703f3a278c8c1404796a28e9933d29c025b587f2a07d1491a
3
+ metadata.gz: daebe6fe343ceb5ee6a226edd4528a9aa2540c9adbb502738a483d8d30f18302
4
+ data.tar.gz: cf3a4619ee6294496ebb4690afcc82f64c4adccab8633c47035757789c67df52
5
5
  SHA512:
6
- metadata.gz: f8e2119e6de7b988a57d9ea04cb18370dbfaac84f1b2fe48b9fa44763bf7e73ed4ad8aa5458e970a21b0f054296a08c6835b118b58d5a4fb0b8c3c8903b237cd
7
- data.tar.gz: 3f41be719b834e8aa0b72624f852e334e669974af0151f5ba83562b9bffaa4f997908f50de4b40426ce9298df17374f4ce1c394d858e39796ee6e0137b5e79d7
6
+ metadata.gz: e0e0154f80009838480068032ddc7e30a0e1d734fa5d0d322829c039048c0ba1f12f6ba2fce0002029db3b6dad510d6ea6e226ff6e090ba8b222c6413e2e0ef3
7
+ data.tar.gz: 606760e22e450fe632053055278a755af7438b72772dba82c270b16bd8d2ca60eb2c480f4bf81ab44a8b904625f3056717970de7fe067e765b60717aabfa3198
@@ -2,6 +2,7 @@
2
2
  #include <sddl.h>
3
3
  #include <stdlib.h>
4
4
  #include <string>
5
+ #include <memory>
5
6
 
6
7
  char*
7
8
  wstr_to_mbstr(UINT cp, const WCHAR *wstr, int clen)
@@ -23,20 +24,17 @@ void free_allocated_mbstr(const char* str)
23
24
  VALUE
24
25
  wstr_to_rb_str(UINT cp, const WCHAR *wstr, int clen)
25
26
  {
26
- char *ptr;
27
27
  int len = WideCharToMultiByte(cp, 0, wstr, clen, nullptr, 0, nullptr, nullptr);
28
- if (!(ptr = static_cast<char *>(xmalloc(len)))) return rb_utf8_str_new_cstr("");
29
- WideCharToMultiByte(cp, 0, wstr, clen, ptr, len, nullptr, nullptr);
30
-
31
- VALUE str = rb_utf8_str_new_cstr(ptr);
32
- xfree(ptr);
28
+ std::unique_ptr<char[]> ptr(new char[len]);
29
+ WideCharToMultiByte(cp, 0, wstr, clen, ptr.get(), len, nullptr, nullptr);
30
+ VALUE str = rb_utf8_str_new_cstr(ptr.get());
33
31
 
34
32
  return str;
35
33
  }
36
34
 
37
35
  WCHAR* render_event(EVT_HANDLE handle, DWORD flags)
38
36
  {
39
- PWSTR buffer = nullptr;
37
+ std::unique_ptr<WCHAR[]> buffer(new WCHAR[0]);
40
38
  ULONG bufferSize = 0;
41
39
  ULONG bufferSizeNeeded = 0;
42
40
  ULONG status, count;
@@ -45,9 +43,8 @@ WCHAR* render_event(EVT_HANDLE handle, DWORD flags)
45
43
 
46
44
  do {
47
45
  if (bufferSizeNeeded > bufferSize) {
48
- free(buffer);
49
46
  bufferSize = bufferSizeNeeded;
50
- buffer = static_cast<WCHAR *>(xmalloc(bufferSize));
47
+ buffer.reset(new WCHAR[bufferSize]);
51
48
  if (buffer == nullptr) {
52
49
  status = ERROR_OUTOFMEMORY;
53
50
  bufferSize = 0;
@@ -60,7 +57,7 @@ WCHAR* render_event(EVT_HANDLE handle, DWORD flags)
60
57
  handle,
61
58
  flags,
62
59
  bufferSize,
63
- buffer,
60
+ buffer.get(),
64
61
  &bufferSizeNeeded,
65
62
  &count) != FALSE) {
66
63
  status = ERROR_SUCCESS;
@@ -84,10 +81,7 @@ WCHAR* render_event(EVT_HANDLE handle, DWORD flags)
84
81
  rb_raise(rb_eWinevtQueryError, "ErrorCode: %ld\nError: %s\n", status, RSTRING_PTR(errmsg));
85
82
  }
86
83
 
87
- result = _wcsdup(buffer);
88
-
89
- if (buffer)
90
- xfree(buffer);
84
+ result = _wcsdup(buffer.get());
91
85
 
92
86
  return result;
93
87
  }
@@ -177,7 +171,8 @@ VALUE get_values(EVT_HANDLE handle)
177
171
  if (pRenderedValues[i].StringVal == nullptr) {
178
172
  rb_ary_push(userValues, rb_utf8_str_new_cstr("(NULL)"));
179
173
  } else {
180
- rbObj = wstr_to_rb_str(CP_UTF8, pRenderedValues[i].StringVal, -1);
174
+ std::wstring wStr(pRenderedValues[i].StringVal);
175
+ rbObj = wstr_to_rb_str(CP_UTF8, wStr.c_str(), -1);
181
176
  rb_ary_push(userValues, rbObj);
182
177
  }
183
178
  break;
@@ -1,3 +1,3 @@
1
1
  module Winevt
2
- VERSION = "0.4.6"
2
+ VERSION = "0.4.7.rc"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: winevt_c
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.6
4
+ version: 0.4.7.rc
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hiroshi Hatake
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-07-04 00:00:00.000000000 Z
11
+ date: 2019-07-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -133,9 +133,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
133
133
  version: '2.4'
134
134
  required_rubygems_version: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ">="
136
+ - - ">"
137
137
  - !ruby/object:Gem::Version
138
- version: '0'
138
+ version: 1.3.1
139
139
  requirements: []
140
140
  rubyforge_project:
141
141
  rubygems_version: 2.7.3