[PATCH] libdw: Prevent infinite recursion when processing DW_TAG_imported_unit.

Petr Machata pmachata at redhat.com
Mon Jan 12 02:15:31 UTC 2015


Mark Wielaard <mjw at redhat.com> writes:

> +  /* Checks the given DIE hasn't been imported yet to prevent cycles.  */
> +  inline bool imports_contains (Dwarf_Die *die)
> +  {
> +    struct Dwarf_Die_Chain *import = imports;
> +    while (import != NULL)
> +      {
> +	if (import->die.addr == die->addr)
> +	  return true;
> +	import = import->parent;
> +      }

This is equivalent but is IMHO canonical:

    for (Dwarf_Die_Chain *import = imports; import != NULL;
         import = import->parent)
      if (import->die.addr == die->addr)
        return true;

Thanks,
Petr


More information about the elfutils-devel mailing list