jaehyun pushed a commit to branch master.

http://git.enlightenment.org/tools/enventor.git/commit/?id=24e012812f9e59358ef9ae3fe4f19c82e3b7c964

commit 24e012812f9e59358ef9ae3fe4f19c82e3b7c964
Author: taehyub <taehyub....@samsung.com>
Date:   Tue Feb 2 17:39:06 2016 +0900

    edc_parser: move update cb into bracket_thread_end
    
    Summary:
    move update cb into bracket_thread_end.
    it can cause runtime error when the bracket thread is canceled.
    
    @fix
    
    Reviewers: Hermet, Jaehyun_Cho
    
    Differential Revision: https://phab.enlightenment.org/D3636
---
 src/lib/edc_parser.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/lib/edc_parser.c b/src/lib/edc_parser.c
index e74e2c7..0723f62 100644
--- a/src/lib/edc_parser.c
+++ b/src/lib/edc_parser.c
@@ -59,6 +59,8 @@ typedef struct bracket_thread_data_s
    Bracket_Update_Cb update_cb;
    void *data;
    Ecore_Thread *thread;
+   int left;
+   int right;
    parser_data *pd;
 
 } bracket_td;
@@ -1420,13 +1422,15 @@ bracket_thread_blocking(void *data, Ecore_Thread 
*thread EINA_UNUSED)
         right_bracket = -1;
      }
 
-   btd->update_cb(btd->data, left_bracket, right_bracket);
+   btd->left = left_bracket;
+   btd->right = right_bracket;
 }
 
 static void
 bracket_thread_end(void *data, Ecore_Thread *thread EINA_UNUSED)
 {
    bracket_td *btd = data;
+   btd->update_cb(btd->data, btd->left, btd->right);
    if (btd->pd->btd == btd) btd->pd->btd = NULL;
    free(btd);
 }

-- 


Reply via email to