[libdvdnav-devel] Fix data race condition accessing this->cur_cell_time

Jean-Baptiste Kempf git at videolan.org
Mon Aug 4 19:34:44 CEST 2014


libdvdnav | branch: master | Jean-Baptiste Kempf <jb at videolan.org> | Mon Aug  4 19:32:32 2014 +0200| [866b12ecb085417075db9c003c92507d5b261401] | committer: Jean-Baptiste Kempf

Fix data race condition accessing this->cur_cell_time

> http://git.videolan.org/gitweb.cgi/libdvdnav.git/?a=commit;h=866b12ecb085417075db9c003c92507d5b261401
---

 src/searching.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/searching.c b/src/searching.c
index 81155e3..5a63da6 100644
--- a/src/searching.c
+++ b/src/searching.c
@@ -1288,12 +1288,12 @@ dvdnav_status_t dvdnav_jump_to_sector_by_time(dvdnav_t *this,
   /* jump to sector */
   sector_off = jump->sector - cell_data->bgn->sector;
   result = vm_jump_cell_block(this->vm, cell_data->idx, sector_off);
+  pthread_mutex_lock(&this->vm_lock);
   this->cur_cell_time = 0;
-  if (result) {
-    pthread_mutex_lock(&this->vm_lock);
+  if (result) { /* vm_jump_cell_block was sucessful */
     this->vm->hop_channel += HOP_SEEK;
-    pthread_mutex_unlock(&this->vm_lock);
   }
+  pthread_mutex_unlock(&this->vm_lock);
 
 exit:
   return result;



More information about the libdvdnav-devel mailing list