* Adding an extra element to the end of the list, essentially a NULL terminator
* Adding an extra element to the end of the list, essentially a * NULL terminator
acpi_rs_get_pci_routing_table_length (	union acpi_operand_object       *package_object,	acpi_size                       *buffer_size_needed){	u32                             number_of_elements;	acpi_size                       temp_size_needed = 0;	union acpi_operand_object       **top_object_list;	u32                             index;	union acpi_operand_object       *package_element;	union acpi_operand_object       **sub_object_list;	u8                              name_found;	u32                             table_index;	ACPI_FUNCTION_TRACE ("rs_get_pci_routing_table_length");	number_of_elements = package_object->package.count;	/*	 * Calculate the size of the return buffer.	 * The base size is the number of elements * the sizes of the	 * structures.  Additional space for the strings is added below.	 * The minus one is to subtract the size of the u8 Source[1]	 * member because it is added below.	 *	 * But each PRT_ENTRY structure has a pointer to a string and	 * the size of that string must be found.	 */	top_object_list = package_object->package.elements;	for (index = 0; index < number_of_elements; index++) {		/*		 * Dereference the sub-package		 */		package_element = *top_object_list;		/*		 * The sub_object_list will now point to an array of the		 * four IRQ elements: Address, Pin, Source and source_index		 */		sub_object_list = package_element->package.elements;		/*		 * Scan the irq_table_elements for the Source Name String		 */		name_found = FALSE;		for (table_index = 0; table_index < 4 && !name_found; table_index++) {			if ((ACPI_TYPE_STRING == ACPI_GET_OBJECT_TYPE (*sub_object_list)) ||				((ACPI_TYPE_LOCAL_REFERENCE == ACPI_GET_OBJECT_TYPE (*sub_object_list)) &&					((*sub_object_list)->reference.opcode == AML_INT_NAMEPATH_OP))) {				name_found = TRUE;			}			else {				/*				 * Look at the next element				 */				sub_object_list++;			}		}		temp_size_needed += (sizeof (struct acpi_pci_routing_table) - 4);		/*		 * Was a String type found?		 */		if (name_found) {			if (ACPI_GET_OBJECT_TYPE (*sub_object_list) == ACPI_TYPE_STRING) {				/*				 * The length String.Length field does not include the				 * terminating NULL, add 1				 */				temp_size_needed += ((acpi_size) (*sub_object_list)->string.length + 1);			}			else {				temp_size_needed += acpi_ns_get_pathname_length (						   (*sub_object_list)->reference.node);			}		}		else {			/*			 * If no name was found, then this is a NULL, which is			 * translated as a u32 zero.			 */			temp_size_needed += sizeof (u32);		}		/* Round up the size since each element must be aligned */		temp_size_needed = ACPI_ROUND_UP_to_64_bITS (temp_size_needed);		/*		 * Point to the next union acpi_operand_object		 */		top_object_list++;	}	/*	 * Adding an extra element to the end of the list, essentially a NULL terminator	 */	*buffer_size_needed = temp_size_needed + sizeof (struct acpi_pci_routing_table);	return_ACPI_STATUS (AE_OK);}