From f3aa49b1b1a94be22af187550ffcde1f4099e0cb Mon Sep 17 00:00:00 2001 From: Matthew Wilber Date: Sat, 24 May 2003 23:03:40 +0000 Subject: [PATCH] improved performance of CompareFiles function git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3305 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../translators/TranslatorTestAddOn.cpp | 42 ++++++++++--------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/src/tests/add-ons/translators/TranslatorTestAddOn.cpp b/src/tests/add-ons/translators/TranslatorTestAddOn.cpp index 3298fdcd93..8be3879f90 100644 --- a/src/tests/add-ons/translators/TranslatorTestAddOn.cpp +++ b/src/tests/add-ons/translators/TranslatorTestAddOn.cpp @@ -32,34 +32,36 @@ bool CompareStreams(BPositionIO &a, BPositionIO &b) { off_t alen = 0, blen = 0; - uint8 *abuf = NULL, *bbuf = NULL; + const uint32 kbuflen = 2048; + uint8 abuf[kbuflen], bbuf[kbuflen]; a.Seek(0, SEEK_END); alen = a.Position(); b.Seek(0, SEEK_END); - blen = b.Position(); - + blen = b.Position(); if (alen != blen) return false; - - bool bresult = false; - abuf = new uint8[alen]; - bbuf = new uint8[blen]; - if (a.ReadAt(0, abuf, alen) == alen) { - if (b.ReadAt(0, bbuf, blen) == blen) { - if (memcmp(abuf, bbuf, alen) == 0) - bresult = true; - else - bresult = false; - } - } - delete[] abuf; - abuf = NULL; - delete[] bbuf; - bbuf = NULL; + if (a.Seek(0, SEEK_SET) != 0) + return false; + if (b.Seek(0, SEEK_SET) != 0) + return false; + + ssize_t read = 0; + while (alen > 0) { + read = a.Read(abuf, kbuflen); + if (read < 0) + return false; + if (b.Read(bbuf, read) != read) + return false; + + if (memcmp(abuf, bbuf, read) != 0) + return false; + + alen -= read; + } - return bresult; + return true; } // Check each member of translator_info to see that it matches