diff --git a/lib/puppet/util/windows/string.rb b/lib/puppet/util/windows/string.rb index bc4bc99e8..04535d29e 100644 --- a/lib/puppet/util/windows/string.rb +++ b/lib/puppet/util/windows/string.rb @@ -1,20 +1,11 @@ require 'puppet/util/windows' module Puppet::Util::Windows::String - require 'ffi' - def wide_string(str) + # bug in win32-api, see https://tickets.puppetlabs.com/browse/PUP-1389 wstr = str.encode('UTF-16LE') - - ptr = FFI::MemoryPointer.new(:uint16, wstr.length + 1) - ptr.put_string(0, wstr) - ptr.put_uint8(ptr.size - 1, 0) - ptr.put_uint8(ptr.size - 2, 0) - - ffi_str = ptr.get_bytes(0, ptr.size) - ffi_str.force_encoding('UTF-16LE') - - ffi_str.strip + wstr << 0 + wstr.strip end module_function :wide_string end