Liming,

The source changes look good to me and I have verified that 
RegularExpressionDxe builds with VS2015.  I will let Samer do the review.

Acked-by: Michael Kinney <michael.d.kin...@intel.com >

Mike


> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Liming 
> Gao
> Sent: Wednesday, December 2, 2015 9:27 PM
> To: edk2-devel@lists.01.org
> Subject: [edk2] [Patch 4/6] MdeModulePkg: Fix VS2015 warning C4311 & C4312 in 
> RegularExpressionDxe
> 
> warning C4311: pointer truncation from 'void *' to 'unsigned long'
> warning C4312: conversion from 'unsigned long' to 'void *' of greater size
> Update code to convert type to UINTN first, then convert it to other type.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Liming Gao <liming....@intel.com>
> Cc: El-Haj-Mahmoud Samer <samer.el-haj-mahm...@hpe.com>
> ---
>  .../RegularExpressionDxe/Oniguruma/enc/unicode.c   | 22 ++++++-------
>  .../RegularExpressionDxe/Oniguruma/regexec.c       | 36 
> +++++++++++-----------
>  .../RegularExpressionDxe/Oniguruma/regint.h        |  4 +--
>  .../RegularExpressionDxe/Oniguruma/regparse.c      | 16 +++++-----
>  4 files changed, 39 insertions(+), 39 deletions(-)
> 
> diff --git 
> a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/enc/unicode.c
> b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/enc/unicode.c
> index 70a1a52..a906670 100644
> --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/enc/unicode.c
> +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/enc/unicode.c
> @@ -10920,12 +10920,12 @@ static int init_case_fold_table(void)
>    if (ONIG_IS_NULL(FoldTable)) return ONIGERR_MEMORY;
>    for (i = 0; i < (int )(sizeof(CaseFold)/sizeof(CaseFold_11_Type)); i++) {
>      p = &CaseFold[i];
> -    st_add_direct(FoldTable, (st_data_t )p->from, (st_data_t )&(p->to));
> +    st_add_direct(FoldTable, (st_data_t )p->from, (st_data_t 
> )(UINTN)&(p->to));
>    }
>    for (i = 0; i < (int )(sizeof(CaseFold_Locale)/sizeof(CaseFold_11_Type));
>         i++) {
>      p = &CaseFold_Locale[i];
> -    st_add_direct(FoldTable, (st_data_t )p->from, (st_data_t )&(p->to));
> +    st_add_direct(FoldTable, (st_data_t )p->from, (st_data_t 
> )(UINTN)&(p->to));
>    }
> 
>    Unfold1Table = st_init_numtable_with_size(1000);
> @@ -10934,13 +10934,13 @@ static int init_case_fold_table(void)
>    for (i = 0; i < (int )(sizeof(CaseUnfold_11)/sizeof(CaseUnfold_11_Type));
>         i++) {
>      p1 = &CaseUnfold_11[i];
> -    st_add_direct(Unfold1Table, (st_data_t )p1->from, (st_data_t )&(p1->to));
> +    st_add_direct(Unfold1Table, (st_data_t )p1->from, (st_data_t 
> )(UINTN)&(p1->to));
>    }
>    for (i = 0;
>         i < (int )(sizeof(CaseUnfold_11_Locale)/sizeof(CaseUnfold_11_Type));
>         i++) {
>      p1 = &CaseUnfold_11_Locale[i];
> -    st_add_direct(Unfold1Table, (st_data_t )p1->from, (st_data_t )&(p1->to));
> +    st_add_direct(Unfold1Table, (st_data_t )p1->from, (st_data_t 
> )(UINTN)&(p1->to));
>    }
> 
>    Unfold2Table = st_init_table_with_size(&type_code2_hash, 200);
> @@ -10949,13 +10949,13 @@ static int init_case_fold_table(void)
>    for (i = 0; i < (int )(sizeof(CaseUnfold_12)/sizeof(CaseUnfold_12_Type));
>         i++) {
>      p2 = &CaseUnfold_12[i];
> -    st_add_direct(Unfold2Table, (st_data_t )p2->from, (st_data_t )(&p2->to));
> +    st_add_direct(Unfold2Table, (st_data_t )(UINTN)p2->from, (st_data_t 
> )(UINTN)(&p2->to));
>    }
>    for (i = 0;
>         i < (int )(sizeof(CaseUnfold_12_Locale)/sizeof(CaseUnfold_12_Type));
>         i++) {
>      p2 = &CaseUnfold_12_Locale[i];
> -    st_add_direct(Unfold2Table, (st_data_t )p2->from, (st_data_t )(&p2->to));
> +    st_add_direct(Unfold2Table, (st_data_t )(UINTN)p2->from, (st_data_t 
> )(UINTN)(&p2->to));
>    }
> 
>    Unfold3Table = st_init_table_with_size(&type_code3_hash, 30);
> @@ -10964,7 +10964,7 @@ static int init_case_fold_table(void)
>    for (i = 0; i < (int )(sizeof(CaseUnfold_13)/sizeof(CaseUnfold_13_Type));
>         i++) {
>      p3 = &CaseUnfold_13[i];
> -    st_add_direct(Unfold3Table, (st_data_t )p3->from, (st_data_t )(&p3->to));
> +    st_add_direct(Unfold3Table, (st_data_t )(UINTN)p3->from, (st_data_t 
> )(UINTN)(&p3->to));
>    }
> 
> 
> @@ -11265,7 +11265,7 @@ 
> onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,
>         }
>       }
> 
> -     if (onig_st_lookup(Unfold2Table, (st_data_t )to->code,
> +     if (onig_st_lookup(Unfold2Table, (st_data_t )(UINTN)to->code,
>                          (void* )&z2) != 0) {
>         for (i = 0; i < z2->n; i++) {
>           if (z2->code[i] == code) continue;
> @@ -11291,7 +11291,7 @@ 
> onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,
>         }
>       }
> 
> -     if (onig_st_lookup(Unfold3Table, (st_data_t )to->code,
> +     if (onig_st_lookup(Unfold3Table, (st_data_t )(UINTN)to->code,
>                          (void* )&z2) != 0) {
>         for (i = 0; i < z2->n; i++) {
>           if (z2->code[i] == code) continue;
> @@ -11336,7 +11336,7 @@ 
> onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,
> 
>        clen = enclen(enc, p);
>        len += clen;
> -      if (onig_st_lookup(Unfold2Table, (st_data_t )codes, (void* )&z2) != 0) 
> {
> +      if (onig_st_lookup(Unfold2Table, (st_data_t )(UINTN)codes, (void* 
> )&z2) != 0) {
>       for (i = 0; i < z2->n; i++) {
>         items[n].byte_len = len;
>         items[n].code_len = 1;
> @@ -11357,7 +11357,7 @@ 
> onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,
> 
>       clen = enclen(enc, p);
>       len += clen;
> -     if (onig_st_lookup(Unfold3Table, (st_data_t )codes,
> +     if (onig_st_lookup(Unfold3Table, (st_data_t )(UINTN)codes,
>                          (void* )&z2) != 0) {
>         for (i = 0; i < z2->n; i++) {
>           items[n].byte_len = len;
> diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regexec.c
> b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regexec.c
> index 5e3ffa1..160c995 100644
> --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regexec.c
> +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regexec.c
> @@ -863,7 +863,7 @@ stack_double(OnigStackType** arg_stk_base, 
> OnigStackType** arg_stk_end,
>                if (BIT_STATUS_AT(reg->bt_mem_end, k->u.mem.num))\
>                  endp = STACK_AT(k->u.mem.end)->u.mem.pstr;\
>                else\
> -                endp = (UChar* )k->u.mem.end;\
> +                endp = (UChar* )(UINTN)k->u.mem.end;\
>                if (STACK_AT(k->u.mem.start)->u.mem.pstr != endp) {\
>                  (isnull) = 0; break;\
>                }\
> @@ -904,7 +904,7 @@ stack_double(OnigStackType** arg_stk_base, 
> OnigStackType** arg_stk_end,
>                  if (BIT_STATUS_AT(reg->bt_mem_end, k->u.mem.num))\
>                    endp = STACK_AT(k->u.mem.end)->u.mem.pstr;\
>                  else\
> -                  endp = (UChar* )k->u.mem.end;\
> +                  endp = (UChar* )(UINTN)k->u.mem.end;\
>                  if (STACK_AT(k->u.mem.start)->u.mem.pstr != endp) {\
>                    (isnull) = 0; break;\
>                  }\
> @@ -1344,11 +1344,11 @@ match_at(regex_t* reg, const UChar* str, const UChar* 
> end,
>               if (BIT_STATUS_AT(reg->bt_mem_start, i))
>                 rmt[i].rm_so = 
> (regoff_t)(STACK_AT(mem_start_stk[i])->u.mem.pstr - str);
>               else
> -               rmt[i].rm_so = (regoff_t)((UChar* )((void* 
> )(mem_start_stk[i])) - str);
> +               rmt[i].rm_so = (regoff_t)((UChar* )((void* 
> )(UINTN)(mem_start_stk[i])) - str);
> 
>               rmt[i].rm_eo = (regoff_t)((BIT_STATUS_AT(reg->bt_mem_end, i)
>                               ? STACK_AT(mem_end_stk[i])->u.mem.pstr
> -                             : (UChar* )((void* )mem_end_stk[i])) - str);
> +                             : (UChar* )((void* )(UINTN)mem_end_stk[i])) - 
> str);
>             }
>             else {
>               rmt[i].rm_so = rmt[i].rm_eo = ONIG_REGION_NOTPOS;
> @@ -1364,11 +1364,11 @@ match_at(regex_t* reg, const UChar* str, const UChar* 
> end,
>               if (BIT_STATUS_AT(reg->bt_mem_start, i))
>                 region->beg[i] = (int)(STACK_AT(mem_start_stk[i])->u.mem.pstr 
> - str);
>               else
> -               region->beg[i] = (int)((UChar* )((void* )mem_start_stk[i]) - 
> str);
> +               region->beg[i] = (int)((UChar* )((void* 
> )(UINTN)mem_start_stk[i]) - str);
> 
>               region->end[i] = (int)((BIT_STATUS_AT(reg->bt_mem_end, i)
>                                 ? STACK_AT(mem_end_stk[i])->u.mem.pstr
> -                               : (UChar* )((void* )mem_end_stk[i])) - str);
> +                               : (UChar* )((void* )(UINTN)mem_end_stk[i])) - 
> str);
>             }
>             else {
>               region->beg[i] = region->end[i] = ONIG_REGION_NOTPOS;
> @@ -2082,7 +2082,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* 
> end,
> 
>      case OP_MEMORY_START:  MOP_IN(OP_MEMORY_START);
>        GET_MEMNUM_INC(mem, p);
> -      mem_start_stk[mem] = (OnigStackIndex )((void* )s);
> +      mem_start_stk[mem] = (OnigStackIndex )(UINTN)((void* )s);
>        MOP_OUT;
>        continue;
>        break;
> @@ -2096,7 +2096,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* 
> end,
> 
>      case OP_MEMORY_END:  MOP_IN(OP_MEMORY_END);
>        GET_MEMNUM_INC(mem, p);
> -      mem_end_stk[mem] = (OnigStackIndex )((void* )s);
> +      mem_end_stk[mem] = (OnigStackIndex )(UINTN)((void* )s);
>        MOP_OUT;
>        continue;
>        break;
> @@ -2113,13 +2113,13 @@ match_at(regex_t* reg, const UChar* str, const UChar* 
> end,
> 
>      case OP_MEMORY_END_REC:  MOP_IN(OP_MEMORY_END_REC);
>        GET_MEMNUM_INC(mem, p);
> -      mem_end_stk[mem] = (OnigStackIndex )((void* )s);
> +      mem_end_stk[mem] = (OnigStackIndex )(UINTN)((void* )s);
>        STACK_GET_MEM_START(mem, stkp);
> 
>        if (BIT_STATUS_AT(reg->bt_mem_start, mem))
>       mem_start_stk[mem] = GET_STACK_INDEX(stkp);
>        else
> -     mem_start_stk[mem] = (OnigStackIndex )((void* )stkp->u.mem.pstr);
> +     mem_start_stk[mem] = (OnigStackIndex )(UINTN)((void* )stkp->u.mem.pstr);
> 
>        STACK_PUSH_MEM_END_MARK(mem);
>        MOP_OUT;
> @@ -2153,11 +2153,11 @@ match_at(regex_t* reg, const UChar* str, const UChar* 
> end,
>       if (BIT_STATUS_AT(reg->bt_mem_start, mem))
>         pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr;
>       else
> -       pstart = (UChar* )((void* )mem_start_stk[mem]);
> +       pstart = (UChar* )((void* )(UINTN)mem_start_stk[mem]);
> 
>       pend = (BIT_STATUS_AT(reg->bt_mem_end, mem)
>               ? STACK_AT(mem_end_stk[mem])->u.mem.pstr
> -             : (UChar* )((void* )mem_end_stk[mem]));
> +             : (UChar* )((void* )(UINTN)mem_end_stk[mem]));
>       n = (int)(pend - pstart);
>       DATA_ENSURE(n);
>       sprev = s;
> @@ -2185,11 +2185,11 @@ match_at(regex_t* reg, const UChar* str, const UChar* 
> end,
>       if (BIT_STATUS_AT(reg->bt_mem_start, mem))
>         pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr;
>       else
> -       pstart = (UChar* )((void* )mem_start_stk[mem]);
> +       pstart = (UChar* )((void* )(UINTN)mem_start_stk[mem]);
> 
>       pend = (BIT_STATUS_AT(reg->bt_mem_end, mem)
>               ? STACK_AT(mem_end_stk[mem])->u.mem.pstr
> -             : (UChar* )((void* )mem_end_stk[mem]));
> +             : (UChar* )((void* )(UINTN)mem_end_stk[mem]));
>       n = (int)(pend - pstart);
>       DATA_ENSURE(n);
>       sprev = s;
> @@ -2217,11 +2217,11 @@ match_at(regex_t* reg, const UChar* str, const UChar* 
> end,
>         if (BIT_STATUS_AT(reg->bt_mem_start, mem))
>           pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr;
>         else
> -         pstart = (UChar* )((void* )mem_start_stk[mem]);
> +         pstart = (UChar* )((void* )(UINTN)mem_start_stk[mem]);
> 
>         pend = (BIT_STATUS_AT(reg->bt_mem_end, mem)
>                 ? STACK_AT(mem_end_stk[mem])->u.mem.pstr
> -               : (UChar* )((void* )mem_end_stk[mem]));
> +               : (UChar* )((void* )(UINTN)mem_end_stk[mem]));
>         n = (int)(pend - pstart);
>         DATA_ENSURE(n);
>         sprev = s;
> @@ -2256,11 +2256,11 @@ match_at(regex_t* reg, const UChar* str, const UChar* 
> end,
>         if (BIT_STATUS_AT(reg->bt_mem_start, mem))
>           pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr;
>         else
> -         pstart = (UChar* )((void* )mem_start_stk[mem]);
> +         pstart = (UChar* )((void* )(UINTN)mem_start_stk[mem]);
> 
>         pend = (BIT_STATUS_AT(reg->bt_mem_end, mem)
>                 ? STACK_AT(mem_end_stk[mem])->u.mem.pstr
> -               : (UChar* )((void* )mem_end_stk[mem]));
> +               : (UChar* )((void* )(UINTN)mem_end_stk[mem]));
>         n = (int)(pend - pstart);
>         DATA_ENSURE(n);
>         sprev = s;
> diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regint.h
> b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regint.h
> index 44589bf..f48c557 100644
> --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regint.h
> +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regint.h
> @@ -233,13 +233,13 @@
> 
>  #define GET_ALIGNMENT_PAD_SIZE(addr,pad_size) do {\
>    (pad_size) = WORD_ALIGNMENT_SIZE \
> -               - ((unsigned int )(addr) % WORD_ALIGNMENT_SIZE);\
> +               - ((unsigned int )(UINTN)(addr) % WORD_ALIGNMENT_SIZE);\
>    if ((pad_size) == WORD_ALIGNMENT_SIZE) (pad_size) = 0;\
>  } while (0)
> 
>  #define ALIGNMENT_RIGHT(addr) do {\
>    (addr) += (WORD_ALIGNMENT_SIZE - 1);\
> -  (addr) -= ((unsigned int )(addr) % WORD_ALIGNMENT_SIZE);\
> +  (addr) -= ((unsigned int )(UINTN)(addr) % WORD_ALIGNMENT_SIZE);\
>  } while (0)
> 
>  #endif /* PLATFORM_UNALIGNED_WORD_ACCESS */
> diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.c
> b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.c
> index 01ac2b3..4be2f22 100644
> --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.c
> +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.c
> @@ -369,7 +369,7 @@ onig_st_lookup_strend(hash_table_type* table, const 
> UChar* str_key,
>    key.s   = (UChar* )str_key;
>    key.end = (UChar* )end_key;
> 
> -  return onig_st_lookup(table, (st_data_t )(&key), value);
> +  return onig_st_lookup(table, (st_data_t )(UINTN)(&key), value);
>  }
> 
>  extern int
> @@ -382,7 +382,7 @@ onig_st_insert_strend(hash_table_type* table, const 
> UChar* str_key,
>    key = (st_str_end_key* )xmalloc(sizeof(st_str_end_key));
>    key->s   = (UChar* )str_key;
>    key->end = (UChar* )end_key;
> -  result = onig_st_insert(table, (st_data_t )key, value);
> +  result = onig_st_insert(table, (st_data_t )(UINTN)key, value);
>    if (result) {
>      xfree(key);
>    }
> @@ -534,7 +534,7 @@ onig_foreach_name(regex_t* reg,
>      narg.reg  = reg;
>      narg.arg  = arg;
>      narg.enc  = reg->enc; /* should be pattern encoding. */
> -    onig_st_foreach(t, i_names, (HashDataType )&narg);
> +    onig_st_foreach(t, i_names, (HashDataType )(UINTN)&narg);
>    }
>    return narg.ret;
>  }
> @@ -562,7 +562,7 @@ onig_renumber_name_table(regex_t* reg, GroupNumRemap* map)
>    NameTable* t = (NameTable* )reg->name_table;
> 
>    if (IS_NOT_NULL(t)) {
> -    onig_st_foreach(t, i_renumber_name, (HashDataType )map);
> +    onig_st_foreach(t, i_renumber_name, (HashDataType )(UINTN)map);
>    }
>    return 0;
>  }
> @@ -742,7 +742,7 @@ name_add(regex_t* reg, UChar* name, UChar* name_end, int 
> backref, ScanEnv* env)
>        xfree(e);  return ONIGERR_MEMORY;
>      }
>      onig_st_insert_strend(t, e->name, (e->name + (name_end - name)),
> -                          (HashDataType )e);
> +                          (HashDataType )(UINTN)e);
> 
>      e->name_len   = (int)(name_end - name);
>      e->back_num   = 0;
> @@ -5217,7 +5217,7 @@ parse_exp(Node** np, OnigToken* tok, int term,
>                }
>              }
>              else {
> -              if (onig_st_lookup(OnigTypeCClassTable, (st_data_t )&key,
> +              if (onig_st_lookup(OnigTypeCClassTable, (st_data_t 
> )(UINTN)&key,
>                                   (st_data_t* )np)) {
>                  THREAD_ATOMIC_END;
>                  break;
> @@ -5235,8 +5235,8 @@ parse_exp(Node** np, OnigToken* tok, int term,
>              NCCLASS_SET_SHARE(cc);
>              new_key = (type_cclass_key* )xmalloc(sizeof(type_cclass_key));
>           xmemcpy(new_key, &key, sizeof(type_cclass_key));
> -            onig_st_add_direct(OnigTypeCClassTable, (st_data_t )new_key,
> -                               (st_data_t )*np);
> +            onig_st_add_direct(OnigTypeCClassTable, (st_data_t 
> )(UINTN)new_key,
> +                               (st_data_t )(UINTN)*np);
> 
>              THREAD_ATOMIC_END;
>            }
> --
> 1.9.5.msysgit.0
> 
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to