Fixed race condition bug when initializing SDP parser on multi-processor machine

git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@730 74dad513-b988-da41-8d7b-12977e46ad98
diff --git a/pjmedia/src/pjmedia/sdp.c b/pjmedia/src/pjmedia/sdp.c
index 11ae3a2..0820b51 100644
--- a/pjmedia/src/pjmedia/sdp.c
+++ b/pjmedia/src/pjmedia/sdp.c
@@ -71,13 +71,16 @@
 
 static void init_sdp_parser(void)
 {
-    if (is_initialized == 0) {
-	is_initialized = 1;
-	if (is_initialized != 1) {
-	    return;
-	}
-    }
+    if (is_initialized != 0)
+	return;
 
+    pj_enter_critical_section();
+
+    if (is_initialized != 0) {
+	pj_leave_critical_section();
+	return;
+    }
+    
     pj_cis_buf_init(&cis_buf);
 
     pj_cis_init(&cis_buf, &cs_token);
@@ -87,6 +90,9 @@
 
     pj_cis_init(&cis_buf, &cs_digit);
     pj_cis_add_num(&cs_digit);
+
+    is_initialized = 1;
+    pj_leave_critical_section();
 }
 
 PJ_DEF(pjmedia_sdp_attr*) pjmedia_sdp_attr_create( pj_pool_t *pool,
@@ -1114,6 +1120,7 @@
 
 	session = NULL;
 
+	pj_assert(ctx.last_error == PJ_SUCCESS);
     }
     PJ_END;