# HG changeset patch
# User Steve Losh <steve@stevelosh.com>
# Date 1449663175 0
# Node ID 5d747e72d1f2e9bdd1d3f3a1375faabf5fe00313
# Parent  1f8c437ae3c898e5481d1d8d4ca9ecacb79d4edc
Fix the decoding.  Not sure it's fully done yet.

diff -r 1f8c437ae3c8 -r 5d747e72d1f2 autoload/bencode.vim
--- a/autoload/bencode.vim	Sat Dec 05 22:33:04 2015 +0000
+++ b/autoload/bencode.vim	Wed Dec 09 12:12:55 2015 +0000
@@ -40,7 +40,7 @@
 function! bencode#BdecodeAll(bstring) " {{{
     let results = []
     let remaining = a:bstring
-    while remaining != ""
+    while remaining !~# '\v^\s*$'
         let dec = s:ActuallyBdecode(remaining)
         call add(results, dec[0])
         let remaining = dec[1]
@@ -53,14 +53,15 @@
 endfunction " }}}
 
 function! s:ActuallyBdecode(bstring) " {{{
-    if a:bstring[0] == 'i'
-        return s:BdecodeInteger(a:bstring)
-    elseif a:bstring[0] =~ '[0-9]'
-        return s:BdecodeString(a:bstring)
-    elseif a:bstring[0] == 'l'
-        return s:BdecodeList(a:bstring)
-    elseif a:bstring[0] == 'd'
-        return s:BdecodeDict(a:bstring)
+    let bs = substitute(a:bstring, '\v^\s*', '', '')
+    if bs[0] == 'i'
+        return s:BdecodeInteger(bs)
+    elseif bs[0] =~ '[0-9]'
+        return s:BdecodeString(bs)
+    elseif bs[0] == 'l'
+        return s:BdecodeList(bs)
+    elseif bs[0] == 'd'
+        return s:BdecodeDict(bs)
     else
         throw "shits fucked, yo"
     endif
@@ -109,11 +110,9 @@
         let rest = dec[1]
 
         let dec = s:ActuallyBdecode(rest)
-        let val = dec[0]
+        let result[key] = dec[0]
         let rest = dec[1]
 
-        let result[key] = val
-
         if rest[0] == 'e'
             "                   strip off the trailing e from the dict
             return [result, rest[1:]]