When checking for EOF, we should not check whether the read request
has been fully satisified.  The InputStream API does not guarantee
that readFromInputStream() always fills the whole buffer, if EOF is
not reached.  Since there is the function inputStreamAtEOF() dedicated
for this purpose, we should use it for EOF checking after
readFromInputStream()==0.
---

 src/inputPlugins/aac_plugin.c |    9 ++++-----
 1 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/src/inputPlugins/aac_plugin.c b/src/inputPlugins/aac_plugin.c
index 4b1cba6..55c211c 100644
--- a/src/inputPlugins/aac_plugin.c
+++ b/src/inputPlugins/aac_plugin.c
@@ -62,7 +62,7 @@ static void fillAacBuffer(AacBuffer * b)
                                                     b->
                                                     bytesIntoBuffer),
                                            1, rest);
-               if (bread != rest)
+               if (bread == 0 && inputStreamAtEOF(b->inStream))
                        b->atEof = 1;
                b->bytesIntoBuffer += bread;
        }
@@ -150,7 +150,7 @@ static void initAacBuffer(InputStream * inStream, AacBuffer 
* b, float *length)
        b->bytesConsumed = 0;
        b->fileOffset = 0;
 
-       if (bread != FAAD_MIN_STREAMSIZE * AAC_MAX_CHANNELS)
+       if (bread == 0 && inputStreamAtEOF(inStream))
                b->atEof = 1;
 
        tagsize = 0;
@@ -173,10 +173,9 @@ static void initAacBuffer(InputStream * inStream, 
AacBuffer * b, float *length)
                bread = readFromInputStream(b->inStream, b->buffer, 1,
                                            FAAD_MIN_STREAMSIZE *
                                            AAC_MAX_CHANNELS);
-               if (bread != FAAD_MIN_STREAMSIZE * AAC_MAX_CHANNELS)
+               if (bread == 0 && inputStreamAtEOF(inStream))
                        b->atEof = 1;
-               else
-                       b->atEof = 0;
+
                b->bytesIntoBuffer = bread;
                b->bytesConsumed = 0;
                b->fileOffset = tagsize;


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Musicpd-dev-team mailing list
Musicpd-dev-team@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/musicpd-dev-team

Reply via email to