You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by sb...@apache.org on 2009/11/12 20:19:03 UTC

svn commit: r835508 - in /hadoop/avro/trunk: CHANGES.txt src/c++/api/Reader.hh src/c++/api/Writer.hh src/c++/api/Zigzag.hh src/c++/impl/Zigzag.cc src/c++/test/unittest.cc

Author: sbanacho
Date: Thu Nov 12 19:19:02 2009
New Revision: 835508

URL: http://svn.apache.org/viewvc?rev=835508&view=rev
Log:
AVRO-194. C++ varint encoding buffer too small.

Modified:
    hadoop/avro/trunk/CHANGES.txt
    hadoop/avro/trunk/src/c++/api/Reader.hh
    hadoop/avro/trunk/src/c++/api/Writer.hh
    hadoop/avro/trunk/src/c++/api/Zigzag.hh
    hadoop/avro/trunk/src/c++/impl/Zigzag.cc
    hadoop/avro/trunk/src/c++/test/unittest.cc

Modified: hadoop/avro/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/CHANGES.txt?rev=835508&r1=835507&r2=835508&view=diff
==============================================================================
--- hadoop/avro/trunk/CHANGES.txt (original)
+++ hadoop/avro/trunk/CHANGES.txt Thu Nov 12 19:19:02 2009
@@ -68,6 +68,8 @@
 
   BUG FIXES
  
+    AVRO-194. C++ varint encoding buffer too small. (sbanacho)
+
     AVRO-191. Explicitly include stdint.h for C++. (cutting via sbanacho)
 
     AVRO-176. Safeguard against bad istreams before reading. (sbanacho)

Modified: hadoop/avro/trunk/src/c++/api/Reader.hh
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/src/c%2B%2B/api/Reader.hh?rev=835508&r1=835507&r2=835508&view=diff
==============================================================================
--- hadoop/avro/trunk/src/c++/api/Reader.hh (original)
+++ hadoop/avro/trunk/src/c++/api/Reader.hh Thu Nov 12 19:19:02 2009
@@ -146,7 +146,7 @@
         int shift = 0;
         do {
             in_.readByte(val);
-            uint64_t newbits = (val & 0x7f) << shift;
+            uint64_t newbits = static_cast<uint64_t>(val & 0x7f) << shift;
             encoded |= newbits;
             shift += 7;
         } while (val & 0x80);

Modified: hadoop/avro/trunk/src/c++/api/Writer.hh
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/src/c%2B%2B/api/Writer.hh?rev=835508&r1=835507&r2=835508&view=diff
==============================================================================
--- hadoop/avro/trunk/src/c++/api/Writer.hh (original)
+++ hadoop/avro/trunk/src/c++/api/Writer.hh Thu Nov 12 19:19:02 2009
@@ -52,7 +52,7 @@
     }
 
     void writeValue(int64_t val) {
-        boost::array<uint8_t, 9> bytes;
+        boost::array<uint8_t, 10> bytes;
         size_t size = encodeInt64(val, bytes);
         out_.writeBytes(bytes.data(), size);
     }

Modified: hadoop/avro/trunk/src/c++/api/Zigzag.hh
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/src/c%2B%2B/api/Zigzag.hh?rev=835508&r1=835507&r2=835508&view=diff
==============================================================================
--- hadoop/avro/trunk/src/c++/api/Zigzag.hh (original)
+++ hadoop/avro/trunk/src/c++/api/Zigzag.hh Thu Nov 12 19:19:02 2009
@@ -34,7 +34,7 @@
 int32_t decodeZigzag32(uint32_t input);
 
 size_t encodeInt32(int32_t input, boost::array<uint8_t, 5> &output);
-size_t encodeInt64(int64_t input, boost::array<uint8_t, 9> &output);
+size_t encodeInt64(int64_t input, boost::array<uint8_t, 10> &output);
 
 } // namespace avro
 

Modified: hadoop/avro/trunk/src/c++/impl/Zigzag.cc
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/src/c%2B%2B/impl/Zigzag.cc?rev=835508&r1=835507&r2=835508&view=diff
==============================================================================
--- hadoop/avro/trunk/src/c++/impl/Zigzag.cc (original)
+++ hadoop/avro/trunk/src/c++/impl/Zigzag.cc Thu Nov 12 19:19:02 2009
@@ -46,7 +46,7 @@
 }
 
 size_t 
-encodeInt64(int64_t input, boost::array<uint8_t, 9> &output)
+encodeInt64(int64_t input, boost::array<uint8_t, 10> &output)
 {
     // get the zigzag encoding 
     uint64_t val = encodeZigzag64(input);

Modified: hadoop/avro/trunk/src/c++/test/unittest.cc
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/src/c%2B%2B/test/unittest.cc?rev=835508&r1=835507&r2=835508&view=diff
==============================================================================
--- hadoop/avro/trunk/src/c++/test/unittest.cc (original)
+++ hadoop/avro/trunk/src/c++/test/unittest.cc Thu Nov 12 19:19:02 2009
@@ -80,6 +80,7 @@
         record.addField("mybool", BoolSchema());
         FixedSchema fixed(16, "fixed16");
         record.addField("myfixed", fixed);
+        record.addField("mylong", LongSchema());
         record.addField("anotherint", intSchema);
 
         schema_.setSchema(record);
@@ -149,6 +150,9 @@
         
         s.writeFixed(fixeddata);
 
+        std::cout << "Long\n";
+        s.writeLong(7010728798977672067LL);
+
         std::cout << "Int\n";
         s.writeInt(-3456);
     }
@@ -290,6 +294,11 @@
         readFixed(p);
 
         printNext(p);
+        longval = p.readLong();
+        std::cout << longval << '\n';
+        BOOST_CHECK_EQUAL(longval, 7010728798977672067LL);
+
+        printNext(p);
         int32_t intval = p.readInt();
         std::cout << intval << '\n';
         BOOST_CHECK_EQUAL(intval, -3456);