         index++
         continue
 
-      tmp = @decodeBytes string[index...index + 4]
+      try
+        tmp = @decodeBytes string[index...index + 4]
+      catch e
+        throw e
 
       bytes.push (tmp & 0xFF0000) >> 16
       bytes.push (tmp & 0x00FF00) >>  8

                  bytes[bytesIndex + 3]

        blockPosition += gapSize
        bytesIndex += Compressor.BytesPerBlock

      block = @decodeBlock bytes[bytesIndex..bytesIndex + Compressor.BytesPerBlock]

      [x, remainder] = @quotientAndRemainder blockPosition, map.size * map.size
      [y, remainder] = @quotientAndRemainder remainder,     map.size

    return @encodeArray bytes

  decompress: (string, map) ->
    try
      bytes = @decodeArray string
    catch e
      throw e

    bytesIndex    = 0
    blockPosition = 0
