git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] http-push: simplify deleting a list item

From
Junio C Hamano <gitster@pobox.com>
Date
Oct 15, 2019, 01:53 UTC
Message-ID
<xmqqtv8adba1.fsf@gitster-ct.c.googlers.com>
In-Reply-To
<3739b392-ee45-98c2-c5fa-e4c36e585166@web.de>
René Scharfe <l.s.r@web.de> writes:
Show 17 quoted lines
> The first step for deleting an item from a linked list is to locate the
> item preceding it.  Be more careful in release_request() and handle an
> empty list.  This only has consequences for invalid delete requests
> (removing the same item twice, or deleting an item that was never added
> to the list), but simplifies the loop condition as well as the check
> after the loop.
>
> Once we found the item's predecessor in the list, update its next
> pointer to skip over the item, which removes it from the list.  In other
> words: Make the item's successor the successor of its predecessor.
> (At this point entry->next == request and prev->next == lock,
> respectively.)  This is a bit simpler and saves a pointer dereference.
>
> Signed-off-by: René Scharfe <l.s.r@web.de>
> ---
>  http-push.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)

Nice simplification. I wonder how much longer we should be maintaining this program, though;-)

Will queue.
Show 30 quoted lines
>
> diff --git a/http-push.c b/http-push.c
> index 0353f9f514..822f326599 100644
> --- a/http-push.c
> +++ b/http-push.c
> @@ -501,10 +501,10 @@ static void release_request(struct transfer_request *request)
>  	if (request == request_queue_head) {
>  		request_queue_head = request->next;
>  	} else {
> -		while (entry->next != NULL && entry->next != request)
> +		while (entry && entry->next != request)
>  			entry = entry->next;
> -		if (entry->next == request)
> -			entry->next = entry->next->next;
> +		if (entry)
> +			entry->next = request->next;
>  	}
>
>  	free(request->url);
> @@ -981,7 +981,7 @@ static int unlock_remote(struct remote_lock *lock)
>  		while (prev && prev->next != lock)
>  			prev = prev->next;
>  		if (prev)
> -			prev->next = prev->next->next;
> +			prev->next = lock->next;
>  	}
>
>  	free(lock->owner);
> --
> 2.23.0
Previous: René Scharfe
Message 2 of 2 in “http-push: simplify deleting a list item”
  1. http-push: simplify deleting a list itemRené Scharfe, Oct 13, 2019
  2. Junio C HamanoOct 15, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.