# [PATCH] checkout: constify parameters of checkout_stage() and checkout_merged()

2 messages from 2016-09-13 to 2016-09-13. Participants: René Scharfe, Jeff King.
Thread: https://gitlist.dev/t/44075

## René Scharfe, 2016-09-13 17:11

Subject: [PATCH] checkout: constify parameters of checkout_stage() and checkout_merged()
Message-ID: <a66eedc3-fc86-dd45-628c-e38018a03808@web.de>
URL: https://gitlist.dev/e/a66eedc3-fc86-dd45-628c-e38018a03808%40web.de

```
Document the fact that checkout_stage() and checkout_merged() don't
change the objects passed to them by adding the modifier const.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
---
 builtin/checkout.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/builtin/checkout.c b/builtin/checkout.c
index 8672d07..afbff3e 100644
--- a/builtin/checkout.c
+++ b/builtin/checkout.c
@@ -154,8 +154,8 @@ static int check_stages(unsigned stages, const struct cache_entry *ce, int pos)
 	return 0;
 }
 
-static int checkout_stage(int stage, struct cache_entry *ce, int pos,
-			  struct checkout *state)
+static int checkout_stage(int stage, const struct cache_entry *ce, int pos,
+			  const struct checkout *state)
 {
 	while (pos < active_nr &&
 	       !strcmp(active_cache[pos]->name, ce->name)) {
@@ -169,7 +169,7 @@ static int checkout_stage(int stage, struct cache_entry *ce, int pos,
 		return error(_("path '%s' does not have their version"), ce->name);
 }
 
-static int checkout_merged(int pos, struct checkout *state)
+static int checkout_merged(int pos, const struct checkout *state)
 {
 	struct cache_entry *ce = active_cache[pos];
 	const char *path = ce->name;
-- 
2.10.0


```

## Jeff King, 2016-09-13 18:18

Subject: Re: [PATCH] checkout: constify parameters of checkout_stage() and checkout_merged()
Message-ID: <20160913181807.2ow5fy6b4622sndr@sigill.intra.peff.net>
URL: https://gitlist.dev/e/20160913181807.2ow5fy6b4622sndr%40sigill.intra.peff.net
In-Reply-To: <a66eedc3-fc86-dd45-628c-e38018a03808@web.de>

```
On Tue, Sep 13, 2016 at 07:11:52PM +0200, René Scharfe wrote:

> Document the fact that checkout_stage() and checkout_merged() don't
> change the objects passed to them by adding the modifier const.

Hmm. Sometimes these big "context" objects are hard to make const,
because we end up using them to hold or pass state between functions
(e.g., see diff_options). So I'd worry slightly that we'll end up
un-consting this in the long run.

That being said, it is easy to revert, and it provides some small
benefit, so I don't mind it in the meantime.

-Peff

```
