From: nobu@... Date: 2014-08-06T03:55:55+00:00 Subject: [ruby-core:64218] [ruby-trunk - Bug #10111] gdbm truncated UTF-8 data problem Issue #10111 has been updated by Nobuyoshi Nakada. KiHyun Kang wrote: > Nobuyoshi Nakada wrote: > > gdbm doesn't preserve encodings now. > > gdbm doesn't have to preserve encodings. ~~~ $ ./ruby -v -rgdbm -e 'data = "\xEA\xB0\x80ABCDEF"' -e 'db = GDBM.new("test.db", 0666)' -e 'db["key"] = data' -e 'p db["key"] == data.b' ruby 2.1.2p195 (2014-08-04 revision 47056) [x86_64-darwin13.0] true ~~~ > ext/dbm works well but ext/gdbm because ext/gdbm is using 'length' to get size. > > 'length' is not suitable to determine actual size. > > use 'bytesize' instead of 'length'. I can't understand what you mean at all. ---------------------------------------- Bug #10111: gdbm truncated UTF-8 data problem https://bugs.ruby-lang.org/issues/10111#change-48212 * Author: KiHyun Kang * Status: Open * Priority: Normal * Assignee: Aaron Patterson * Category: ext * Target version: * ruby -v: ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- Reproducible script is here. ~~~ # coding: utf-8 require 'gdbm' data = "\xEA\xB0\x80ABCDEF" db = GDBM.new( 'test.db', 0666 ) db['key'] = data throw 'data truncated!!' if db['key'] != data ~~~ -- https://bugs.ruby-lang.org/