From eba2deca7aa16097bdefabd039fbbbc02b3f5672 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Sat, 17 Mar 2012 16:12:22 +0000 Subject: [PATCH] Pickle blobs as bytearrays. --- cli/cli_pickle.cpp | 2 +- common/pickle.hpp | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/cli/cli_pickle.cpp b/cli/cli_pickle.cpp index e3222db..9145f44 100644 --- a/cli/cli_pickle.cpp +++ b/cli/cli_pickle.cpp @@ -145,7 +145,7 @@ public: } void visit(Blob *node) { - writer.writeString((const char *)node->buf, node->size); + writer.writeByteArray(node->buf, node->size); } void visit(Pointer *node) { diff --git a/common/pickle.hpp b/common/pickle.hpp index 736025b..60694fa 100644 --- a/common/pickle.hpp +++ b/common/pickle.hpp @@ -268,6 +268,16 @@ public: os.put(u.c[0]); } + inline void writeByteArray(const void *buf, size_t length) { + os.put(GLOBAL); + os << "__builtin__\nbytearray\n"; + os.put(BINPUT); + os.put(1); + writeString(static_cast(buf), length); + os.put(TUPLE1); + os.put(REDUCE); + } + protected: inline void putInt16(uint16_t i) { os.put( i & 0xff); -- 2.45.2