diff --git a/wlauto/common/bin/arm64/revent b/wlauto/common/bin/arm64/revent index 193ab28b..10df6756 100755 Binary files a/wlauto/common/bin/arm64/revent and b/wlauto/common/bin/arm64/revent differ diff --git a/wlauto/common/bin/armeabi/revent b/wlauto/common/bin/armeabi/revent index 24a8772b..406d4cf3 100755 Binary files a/wlauto/common/bin/armeabi/revent and b/wlauto/common/bin/armeabi/revent differ diff --git a/wlauto/external/revent/revent.c b/wlauto/external/revent/revent.c index 25490a76..b547cff7 100644 --- a/wlauto/external/revent/revent.c +++ b/wlauto/external/revent/revent.c @@ -630,9 +630,12 @@ int read_legacy_replay_event(int fdin, replay_event_t* ev) char padding[EVENT_PADDING_SIZE]; rb = read(fdin, &(ev->dev_idx), sizeof(int32_t)); - if (rb < (int)sizeof(int32_t)) + if (rb < (int)sizeof(int32_t)){ + //Allow for abrupt ending of legacy recordings. + if (!errno) + return EOF; return errno; - + } rb = read(fdin, &padding, EVENT_PADDING_SIZE); if (rb < (int)sizeof(int32_t)) return errno; @@ -997,6 +1000,10 @@ inline void read_revent_recording_or_die(const char *filepath, revent_recording_ fsize = get_file_size(filepath); recording->events = malloc((size_t)fsize); i = 0; + + // Safely get file descriptor for fin, by flushing first. + fflush(fin); + while (1) { ret = read_legacy_replay_event(fileno(fin), &recording->events[i]); if (ret == EOF) { diff --git a/wlauto/utils/revent.py b/wlauto/utils/revent.py index 25e405a2..619b6367 100644 --- a/wlauto/utils/revent.py +++ b/wlauto/utils/revent.py @@ -208,6 +208,7 @@ class ReventRecording(object): raise ValueError('Unexpected recording mode: {}'.format(self.mode)) self.num_events, = read_struct(fh, u64_struct) elif 2 > self.version >= 0: + self.mode = GENERAL_MODE self._read_devices(fh) else: raise ValueError('Invalid recording version: {}'.format(self.version))