Decoder: Cleaned up parse sps function.

Postponed the initializations to decoder context
till the end of the parse sps function, after
all the error checks are done.

Bug: 37968755
Test: ran poc on ASAN-enabled build before/after
Change-Id: Ibee3383c28cede3edb68d2459565d6ce10683bbd
(cherry picked from commit 4eb72f7c935595817026b4cf4aed5ef2ff579ab5)
diff --git a/decoder/ih264d_parse_headers.c b/decoder/ih264d_parse_headers.c
index 2694114..352d605 100644
--- a/decoder/ih264d_parse_headers.c
+++ b/decoder/ih264d_parse_headers.c
@@ -484,7 +484,7 @@
     UWORD32 *pu4_bitstrm_buf = ps_bitstrm->pu4_buffer;
     UWORD32 *pu4_bitstrm_ofst = &ps_bitstrm->u4_ofst;
     UWORD8 u1_frm, uc_constraint_set0_flag, uc_constraint_set1_flag;
-
+    WORD32 i4_cropped_ht, i4_cropped_wd;
     UWORD32 u4_temp;
     WORD32 pic_height_in_map_units_minus1 = 0;
     UWORD32 u2_pic_wd = 0;
@@ -566,8 +566,6 @@
     ps_seq = ps_dec->pv_scratch_sps_pps;
     *ps_seq = ps_dec->ps_sps[u1_seq_parameter_set_id];
 
-    if(NULL == ps_dec->ps_cur_sps)
-        ps_dec->ps_cur_sps = ps_seq;
 
     if((ps_dec->i4_header_decoded & 1) && (ps_seq->u1_profile_idc != u1_profile_idc))
     {
@@ -863,7 +861,6 @@
         UWORD16 u2_btm_ofst = 0;
         UWORD8 u1_frm_mbs_flag;
         UWORD8 u1_vert_mult_factor;
-        WORD32 i4_cropped_ht, i4_cropped_wd;
 
         if(u1_frame_cropping_flag)
         {
@@ -925,10 +922,6 @@
             return IVD_STREAM_WIDTH_HEIGHT_NOT_SUPPORTED;
         }
 
-        ps_dec->u2_disp_height = i4_cropped_ht;
-
-        ps_dec->u2_disp_width = i4_cropped_wd;
-
     }
 
     /* Backup u4_num_reorder_frames if header is already decoded */
@@ -960,6 +953,19 @@
         return IVD_RES_CHANGED;
     }
 
+    /* In case bitstream read has exceeded the filled size, then
+     return an error */
+    if (ps_bitstrm->u4_ofst > ps_bitstrm->u4_max_ofst)
+    {
+        return ERROR_INV_SPS_PPS_T;
+    }
+
+    /*--------------------------------------------------------------------*/
+    /* All initializations to ps_dec are beyond this point                */
+    /*--------------------------------------------------------------------*/
+    ps_dec->u2_disp_height = i4_cropped_ht;
+    ps_dec->u2_disp_width = i4_cropped_wd;
+
     ps_dec->u2_pic_wd = u2_pic_wd;
     ps_dec->u2_pic_ht = u2_pic_ht;
 
@@ -978,14 +984,9 @@
     ps_dec->u2_crop_offset_y = u2_crop_offset_y;
     ps_dec->u2_crop_offset_uv = u2_crop_offset_uv;
 
-    /* In case bitstream read has exceeded the filled size, then
-       return an error */
-    if(ps_bitstrm->u4_ofst > ps_bitstrm->u4_max_ofst)
-    {
-        return ERROR_INV_SPS_PPS_T;
-    }
     ps_seq->u1_is_valid = TRUE;
     ps_dec->ps_sps[u1_seq_parameter_set_id] = *ps_seq;
+    ps_dec->ps_cur_sps = &ps_dec->ps_sps[u1_seq_parameter_set_id];
 
     return OK;
 }