diff --git a/CHANGELOG.md b/CHANGELOG.md index c92076d..e20745e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ Changes ======= +## 0.1.17 + +- Fix crash on Null Arrays + ## 0.1.16 - Version roll logger diff --git a/lib/transformer/transformer.dart b/lib/transformer/transformer.dart index 6c3ba82..1e2f8e7 100644 --- a/lib/transformer/transformer.dart +++ b/lib/transformer/transformer.dart @@ -236,8 +236,9 @@ class _MultiBulkConsumer extends _RedisConsumer { if(_replies == null) { current = _lineConsumer.consume(data, current, end); if(_lineConsumer.done) { - final numReplies = + final numRepliesOnWire = int.parse(new String.fromCharCodes(_lineConsumer.data)); + final numReplies = numRepliesOnWire == -1 ? 0 : numRepliesOnWire; _replies = new List(numReplies); } } else { diff --git a/pubspec.yaml b/pubspec.yaml index 0a60878..1c3b09e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,5 +1,5 @@ name: redis_client -version: 0.1.16 +version: 0.1.17 authors: - Demis Bellot - Adam Singer diff --git a/test/redis_client_tests.dart b/test/redis_client_tests.dart index 259013e..1d7e042 100644 --- a/test/redis_client_tests.dart +++ b/test/redis_client_tests.dart @@ -916,8 +916,14 @@ invalid_line .then((blpopResult) => expect(blpopResult, equals({'list1':'a'}))) ); }); - - test('BRPOP', () { + + test('BLPOP - with timeout', () { + async( + client.blpop(['list1'], timeout: 1). + then((blpopResult) => expect(blpopResult, equals({})))); + }); + + test('BRPOP', () { async( client.rpush('list1', ['a', 'b', 'c']) .then((_) => client.brpop(['list1', 'list2'], timeout: 0))