Message ID | 55B3D68D.5030203@sfr.fr |
---|---|
State | New |
Headers | show |
Le 25/07/2015 20:33, Mikael Morin a écrit : > Le 21/07/2015 23:10, Paul Richard Thomas a écrit : >> On 21 July 2015 at 14:53, Mikael Morin <mikael.morin@sfr.fr> wrote: >>> Hello, >>> >>> The fix for PR61831 committed recently [1] introduced/uncovered a NULLL >>> pointer dereference with iso_varying_string, because a generic symbol >>> (which >>> has a NULL result) is used as procedure symbol, instead of the >>> specific one. >>> Fixed by using esym if it's available. >>> >>> Regression-tested on x86_64-linux. OK for trunk? >>> >>> Mikael >>> >>> [1]: https://gcc.gnu.org/ml/gcc-patches/2015-06/msg01389.html >>> >> > Hello, > > I would like to backport the patch. > As the bug was discovered with the patch [1] above, the test > generic_30.f90 works on the branches, which don't have that patch. > Meanwhile, I have managed to find a test generic_31.f90 that exhibits a > wrong code already on the branch, which justifies the backport. > > Regression tested on the 5 branch, OK for 5 and 4.9? > Ping: https://gcc.gnu.org/ml/gcc-patches/2015-07/msg02160.html
Hi Mikael, This is fine for backporting. Thanks for doing this. Paul On 6 August 2015 at 12:09, Mikael Morin <mikael.morin@sfr.fr> wrote: > Le 25/07/2015 20:33, Mikael Morin a écrit : >> >> Le 21/07/2015 23:10, Paul Richard Thomas a écrit : >>> >>> On 21 July 2015 at 14:53, Mikael Morin <mikael.morin@sfr.fr> wrote: >>>> >>>> Hello, >>>> >>>> The fix for PR61831 committed recently [1] introduced/uncovered a NULLL >>>> pointer dereference with iso_varying_string, because a generic symbol >>>> (which >>>> has a NULL result) is used as procedure symbol, instead of the >>>> specific one. >>>> Fixed by using esym if it's available. >>>> >>>> Regression-tested on x86_64-linux. OK for trunk? >>>> >>>> Mikael >>>> >>>> [1]: https://gcc.gnu.org/ml/gcc-patches/2015-06/msg01389.html >>>> >>> >> Hello, >> >> I would like to backport the patch. >> As the bug was discovered with the patch [1] above, the test >> generic_30.f90 works on the branches, which don't have that patch. >> Meanwhile, I have managed to find a test generic_31.f90 that exhibits a >> wrong code already on the branch, which justifies the backport. >> >> Regression tested on the 5 branch, OK for 5 and 4.9? >> > > Ping: https://gcc.gnu.org/ml/gcc-patches/2015-07/msg02160.html
Index: trans-array.c =================================================================== --- trans-array.c (révision 225979) +++ trans-array.c (copie de travail) @@ -9166,7 +9166,11 @@ gfc_get_proc_ifc_for_expr (gfc_expr *procedure_ref return NULL; /* Normal procedure case. */ - sym = procedure_ref->symtree->n.sym; + if (procedure_ref->expr_type == EXPR_FUNCTION + && procedure_ref->value.function.esym) + sym = procedure_ref->value.function.esym; + else + sym = procedure_ref->symtree->n.sym; /* Typebound procedure case. */ for (ref = procedure_ref->ref; ref; ref = ref->next)