Merge remote-tracking branch 'cloudant/3318-bypass-vhosts'
diff --git a/src/couch_btree.erl b/src/couch_btree.erl
index e9ff7f5..adbc92b 100644
--- a/src/couch_btree.erl
+++ b/src/couch_btree.erl
@@ -342,11 +342,9 @@
 % it's probably really inefficient.
 
 chunkify(InList) ->
-    BaseChunkSize = get_chunk_size(),
+    ChunkThreshold = get_chunk_size(),
     case ?term_size(InList) of
-    Size when Size > BaseChunkSize ->
-        NumberOfChunksLikely = ((Size div BaseChunkSize) + 1),
-        ChunkThreshold = Size div NumberOfChunksLikely,
+    Size when Size > ChunkThreshold ->
         chunkify(InList, ChunkThreshold, [], 0, []);
     _Else ->
         [InList]
@@ -354,6 +352,9 @@
 
 chunkify([], _ChunkThreshold, [], 0, OutputChunks) ->
     lists:reverse(OutputChunks);
+chunkify([], _ChunkThreshold, [Item], _OutListSize, [PrevChunk | RestChunks]) ->
+    NewPrevChunk = PrevChunk ++ [Item],
+    lists:reverse(RestChunks, [NewPrevChunk]);
 chunkify([], _ChunkThreshold, OutList, _OutListSize, OutputChunks) ->
     lists:reverse([lists:reverse(OutList) | OutputChunks]);
 chunkify([InElement | RestInList], ChunkThreshold, OutList, OutListSize, OutputChunks) ->
diff --git a/src/couch_db.erl b/src/couch_db.erl
index 8005e6d..d01a3e0 100644
--- a/src/couch_db.erl
+++ b/src/couch_db.erl
@@ -391,7 +391,7 @@
         case couch_btree:size(T) of
             _ when Acc == null ->
                 null;
-            undefined ->
+            nil ->
                 null;
             Size ->
                 Acc + Size