winevt_c 0.4.6 → 0.4.7.rc

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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