summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Pennequin <nicolas.pennequin@free.fr>2008-04-15 19:20:57 +0000
committerNicolas Pennequin <nicolas.pennequin@free.fr>2008-04-15 19:20:57 +0000
commitb36d3c0be228fbf7ad1b193d11d8a3365a045a43 (patch)
treee3c4686fbc89da7bf659431270b00e14dcbde5f5
parent7acc5538bd6964a15062a427dbc311c9c2344753 (diff)
downloadrockbox-b36d3c0be228fbf7ad1b193d11d8a3365a045a43.tar.gz
rockbox-b36d3c0be228fbf7ad1b193d11d8a3365a045a43.zip
Some bugfixes after r17109:
* Fix FS#8893 by plugging a file descriptor leak in audio_load_track. * Fix a possible null pointer dereference by not allowing audio_current_track to return NULL. * Make audio_current_track return prevtrack_id3 only during an automatic track skip. Fixes the wrong metadata being displayed for a short time after a backwards skip. -Cette ligne, et les suivantes ci-dessous, seront ignorées-- M apps/playback.c git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17126 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/playback.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/apps/playback.c b/apps/playback.c
index bce4b6b030..38da93b6c7 100644
--- a/apps/playback.c
+++ b/apps/playback.c
@@ -552,7 +552,7 @@ struct mp3entry* audio_current_track(void)
552 /* The usual case */ 552 /* The usual case */
553 return &curtrack_id3; 553 return &curtrack_id3;
554 } 554 }
555 else if (offset == -1 && *prevtrack_id3.path) 555 else if (automatic_skip && offset == -1 && *prevtrack_id3.path)
556 { 556 {
557 /* We're in a track transition. The codec has moved on to the nex track, 557 /* We're in a track transition. The codec has moved on to the nex track,
558 but the audio being played is still the same (now previous) track. 558 but the audio being played is still the same (now previous) track.
@@ -563,7 +563,8 @@ struct mp3entry* audio_current_track(void)
563 else if (tracks[cur_idx].id3_hid >= 0) 563 else if (tracks[cur_idx].id3_hid >= 0)
564 { 564 {
565 /* Get the ID3 metadata from the main buffer */ 565 /* Get the ID3 metadata from the main buffer */
566 return bufgetid3(tracks[cur_idx].id3_hid); 566 struct mp3entry *ret = bufgetid3(tracks[cur_idx].id3_hid);
567 if (ret) return ret;
567 } 568 }
568 569
569 /* We didn't find the ID3 metadata, so we fill temp_id3 with the little info 570 /* We didn't find the ID3 metadata, so we fill temp_id3 with the little info
@@ -1648,8 +1649,6 @@ static bool audio_load_track(size_t offset, bool start_play)
1648 return false; 1649 return false;
1649 } 1650 }
1650 1651
1651 close(fd);
1652
1653 if (track_widx == track_ridx) 1652 if (track_widx == track_ridx)
1654 { 1653 {
1655 buf_request_buffer_handle(tracks[track_widx].id3_hid); 1654 buf_request_buffer_handle(tracks[track_widx].id3_hid);
@@ -1664,6 +1663,7 @@ static bool audio_load_track(size_t offset, bool start_play)
1664 } 1663 }
1665 } 1664 }
1666 1665
1666 close(fd);
1667 return true; 1667 return true;
1668} 1668}
1669 1669