# [PATCH] Fix sizeof usage in get_permutations

4 messages from 2012-12-13 to 2012-12-13. Participants: Matthew Daley, Joachim Schmitz, Junio C Hamano, Felipe Contreras.
Thread: https://gitlist.dev/t/32330

## Matthew Daley, 2012-12-13 13:36

Subject: [PATCH] Fix sizeof usage in get_permutations
Message-ID: <1355405790-20302-1-git-send-email-mattjd@gmail.com>
URL: https://gitlist.dev/e/1355405790-20302-1-git-send-email-mattjd%40gmail.com

```
Currently it gets the size of an otherwise unrelated, unused variable
instead of the expected struct size.

Signed-off-by: Matthew Daley <mattjd@gmail.com>
---
 builtin/pack-redundant.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/builtin/pack-redundant.c b/builtin/pack-redundant.c
index f5c6afc..7544687 100644
--- a/builtin/pack-redundant.c
+++ b/builtin/pack-redundant.c
@@ -301,14 +301,14 @@ static void pll_free(struct pll *l)
  */
 static struct pll * get_permutations(struct pack_list *list, int n)
 {
-	struct pll *subset, *ret = NULL, *new_pll = NULL, *pll;
+	struct pll *subset, *ret = NULL, *new_pll = NULL;
 
 	if (list == NULL || pack_list_size(list) < n || n == 0)
 		return NULL;
 
 	if (n == 1) {
 		while (list) {
-			new_pll = xmalloc(sizeof(pll));
+			new_pll = xmalloc(sizeof(struct pll));
 			new_pll->pl = NULL;
 			pack_list_insert(&new_pll->pl, list);
 			new_pll->next = ret;
@@ -321,7 +321,7 @@ static struct pll * get_permutations(struct pack_list *list, int n)
 	while (list->next) {
 		subset = get_permutations(list->next, n - 1);
 		while (subset) {
-			new_pll = xmalloc(sizeof(pll));
+			new_pll = xmalloc(sizeof(struct pll));
 			new_pll->pl = subset->pl;
 			pack_list_insert(&new_pll->pl, list);
 			new_pll->next = ret;
-- 
1.7.10.4

```

## Joachim Schmitz, 2012-12-13 16:13

Subject: Re: [PATCH] Fix sizeof usage in get_permutations
Message-ID: <kacus2$mml$1@ger.gmane.org>
URL: https://gitlist.dev/e/kacus2%24mml%241%40ger.gmane.org
In-Reply-To: <1355405790-20302-1-git-send-email-mattjd@gmail.com>

```
Matthew Daley wrote:
> Currently it gets the size of an otherwise unrelated, unused variable
> instead of the expected struct size.
> 
> Signed-off-by: Matthew Daley <mattjd@gmail.com>
> ---
> builtin/pack-redundant.c |    6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/builtin/pack-redundant.c b/builtin/pack-redundant.c
> index f5c6afc..7544687 100644
> --- a/builtin/pack-redundant.c
> +++ b/builtin/pack-redundant.c
> @@ -301,14 +301,14 @@ static void pll_free(struct pll *l)
>  */
> static struct pll * get_permutations(struct pack_list *list, int n)
> {
> - struct pll *subset, *ret = NULL, *new_pll = NULL, *pll;
> + struct pll *subset, *ret = NULL, *new_pll = NULL;
> 
>  if (list == NULL || pack_list_size(list) < n || n == 0)
>  return NULL;
> 
>  if (n == 1) {
>  while (list) {
> - new_pll = xmalloc(sizeof(pll));
> + new_pll = xmalloc(sizeof(struct pll));
>  new_pll->pl = NULL;
>  pack_list_insert(&new_pll->pl, list);
>  new_pll->next = ret;
> @@ -321,7 +321,7 @@ static struct pll * get_permutations(struct
>  pack_list *list, int n) while (list->next) {
>  subset = get_permutations(list->next, n - 1);
>  while (subset) {
> - new_pll = xmalloc(sizeof(pll));
> + new_pll = xmalloc(sizeof(struct pll));

Why not just
new_pll = xmalloc(sizeof(*new_pll));

>  new_pll->pl = subset->pl;
>  pack_list_insert(&new_pll->pl, list);
>  new_pll->next = ret;

```

## Junio C Hamano, 2012-12-13 19:11

Subject: Re: [PATCH] Fix sizeof usage in get_permutations
Message-ID: <7vtxrpydfw.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vtxrpydfw.fsf%40alter.siamese.dyndns.org
In-Reply-To: <1355405790-20302-1-git-send-email-mattjd@gmail.com>

```
Thanks; it shows how rarely this obscure tool is used these days.

```

## Felipe Contreras, 2012-12-13 22:09

Subject: Re: [PATCH] Fix sizeof usage in get_permutations
Message-ID: <CAMP44s06jjsxKVk_fVb7dadiZ=d2XavrLT2DRhqOPG2XwmcoMQ@mail.gmail.com>
URL: https://gitlist.dev/e/CAMP44s06jjsxKVk_fVb7dadiZ%3Dd2XavrLT2DRhqOPG2XwmcoMQ%40mail.gmail.com
In-Reply-To: <kacus2$mml$1@ger.gmane.org>

```
On Thu, Dec 13, 2012 at 10:13 AM, Joachim Schmitz
<jojo@schmitz-digital.de> wrote:
> Matthew Daley wrote:
>>
>> Currently it gets the size of an otherwise unrelated, unused variable
>> instead of the expected struct size.
>>
>> Signed-off-by: Matthew Daley <mattjd@gmail.com>
>> ---
>> builtin/pack-redundant.c |    6 +++---
>> 1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/builtin/pack-redundant.c b/builtin/pack-redundant.c
>> index f5c6afc..7544687 100644
>> --- a/builtin/pack-redundant.c
>> +++ b/builtin/pack-redundant.c
>> @@ -301,14 +301,14 @@ static void pll_free(struct pll *l)
>>  */
>> static struct pll * get_permutations(struct pack_list *list, int n)
>> {
>> - struct pll *subset, *ret = NULL, *new_pll = NULL, *pll;
>> + struct pll *subset, *ret = NULL, *new_pll = NULL;
>>
>>  if (list == NULL || pack_list_size(list) < n || n == 0)
>>  return NULL;
>>
>>  if (n == 1) {
>>  while (list) {
>> - new_pll = xmalloc(sizeof(pll));
>> + new_pll = xmalloc(sizeof(struct pll));
>>  new_pll->pl = NULL;
>>  pack_list_insert(&new_pll->pl, list);
>>  new_pll->next = ret;
>> @@ -321,7 +321,7 @@ static struct pll * get_permutations(struct
>>  pack_list *list, int n) while (list->next) {
>>  subset = get_permutations(list->next, n - 1);
>>  while (subset) {
>> - new_pll = xmalloc(sizeof(pll));
>> + new_pll = xmalloc(sizeof(struct pll));
>
>
> Why not just
> new_pll = xmalloc(sizeof(*new_pll));

I prefer that one; it's Linux kernel style.

-- 
Felipe Contreras

```
