if (tail = NULL)
if (tail == NULL)
_dl_unmap (struct link_map *map){  ElfW(Addr) *ftab = map->l_mach.fptr_table;  struct fdesc *head = NULL, *tail = NULL;  size_t i;  __munmap ((void *) map->l_map_start,	    map->l_map_end - map->l_map_start);  if (ftab == NULL)    return;  /* String together the fdesc structures that are being freed.  */  for (i = 0; i < map->l_mach.fptr_table_len; ++i)    {      if (ftab[i])	{	  *(struct fdesc **) ftab[i] = head;	  head = (struct fdesc *) ftab[i];	  if (tail = NULL)	    tail = head;	}    }  /* Prepend the new list to the free_list: */  if (tail)    do      tail->ip = (ElfW(Addr)) local.free_list;    while (! COMPARE_AND_SWAP ((ElfW(Addr) *) &local.free_list,			       tail->ip, (ElfW(Addr)) head));  __munmap (ftab, (map->l_mach.fptr_table_len		   * sizeof (map->l_mach.fptr_table[0])));  map->l_mach.fptr_table = NULL;}