[gold patch RFC]: Release unused external member of thin archive

Ian Lance Taylor iant@google.com
Tue Jul 13 07:56:00 GMT 2010


Cary Coutant <ccoutant@google.com> writes:

> This was dead code anyway (the if condition explicitly tests for obj == NULL).

Yeah, that part is just a cleanup.


> @@ -874,7 +870,13 @@ Archive::include_member(Symbol_table* sy
>      }
>
>    if (!input_objects->add_object(obj))
> -    delete obj;
> +    {
> +      // If this is an external member of a thin archive, unlock the
> +      // file.
> +      if (obj->offset() == 0)
> +	obj->unlock(this->task_);
> +      delete obj;
> +    }
>
> This looks good. Why not do this in the Object destructor, though?

1) No Task; 2) We routinely keep an Object open while the descriptor is
unlocked, and reopen the descriptor if necessary, so the descriptor may
or may not be locked at the point of destruction.

Committed.

Ian



More information about the Binutils mailing list