kernel/sched.c: Fix array initialization typo
PATCH 1/1 kernel/sched.c: Fix array initialization typo
The fix makes certain so that the size of the initialized arrays doesn't go beyond the boundary set by the array size of 40.
--- kernel/sched.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
kernel/sched.c +2 -2
@@ -1383,7 +1383,7 @@ static const int prio_to_weight[40] = {/* 0 */ 1024 ,820 ,655 ,526 ,423 ,/* 5 */ 335 ,272 ,215 ,172 ,137 ,/* 10 */ 110 ,87 ,70 ,56 ,45 , - /* 15 */ 36, 29, 23, 18, 15, +/* 15 */ 36 ,29 ,23 ,18 ,15 };/*
@@ -1401,7 +1401,7 @@ static const u32 prio_to_wmult[40] = {/* 0 */ 4194304 ,5237765 ,6557202 ,8165337 ,10153587 ,/* 5 */ 12820798 ,15790321 ,19976592 ,24970740 ,31350126 ,/* 10 */ 39045157 ,49367440 ,61356676 ,76695844 ,95443717 , - /* 15 */ 119304647, 148102320, 186737708, 238609294, 286331153, +/* 15 */ 119304647 ,148102320 ,186737708 ,238609294 ,286331153 };/* Time spent by the tasks of the cpu accounting group executing in ... */
Signature · 4 lines
1.7.2.2 -- Jean Sacren
Quoted 2 lines · Jean Sacren
The fix makes certain so that the size of the initialized arrays doesn't go beyond the boundary set by the array size of 40.
Why would it possibly do that?
And it's not a typo.
Quoted 16 lines
kernel/sched.c +2
-2@@ -1383,7 +1383,7 @@ static const int prio_to_weight[40] = {/* 0 */ 1024 ,820 ,655 ,526 ,423 ,/* 5 */ 335 ,272 ,215 ,172 ,137 ,/* 10 */ 110 ,87 ,70 ,56 ,45 , - /* 15 */ 36, 29, 23, 18, 15, +/* 15 */ 36 ,29 ,23 ,18 ,15 };/* @@ -1401,7 +1401,7 @@ static const u32 prio_to_wmult[40] = {/* 0 */ 4194304 ,5237765 ,6557202 ,8165337 ,10153587 ,/* 5 */ 12820798 ,15790321 ,19976592 ,24970740 ,31350126 ,/* 10 */ 39045157 ,49367440 ,61356676 ,76695844 ,95443717 , - /* 15 */ 119304647, 148102320, 186737708, 238609294, 286331153, +/* 15 */ 119304647 ,148102320 ,186737708 ,238609294 ,286331153 };
From: Alexey Dobriyan <[email protected]>
Date: Mon, 13 Jun 2011 00:35:49 +0300
Quoted 6 lines · Jean Sacren
Quoted 2 lines
The fix makes certain so that the size of the initialized arrays doesn't go beyond the boundary set by the array size of 40.
Why would it possibly do that?
With that ',' comma, doesn't it imply there might be the 41st element in the array? Despite the fact that that element is bogus.
Further, if the comma is there, what's the benefit? I know you're cool, but is it cool in code that way as well?
Quoted 2 lines
And it's not a typo.
What is it then?
Quoted 17 lines
Quoted 17 lines
kernel/sched.c +2
-2@@ -1383,7 +1383,7 @@ static const int prio_to_weight[40] = {/* 0 */ 1024 ,820 ,655 ,526 ,423 ,/* 5 */ 335 ,272 ,215 ,172 ,137 ,/* 10 */ 110 ,87 ,70 ,56 ,45 , - /* 15 */ 36, 29, 23, 18, 15, +/* 15 */ 36 ,29 ,23 ,18 ,15 };/* @@ -1401,7 +1401,7 @@ static const u32 prio_to_wmult[40] = {/* 0 */ 4194304 ,5237765 ,6557202 ,8165337 ,10153587 ,/* 5 */ 12820798 ,15790321 ,19976592 ,24970740 ,31350126 ,/* 10 */ 39045157 ,49367440 ,61356676 ,76695844 ,95443717 , - /* 15 */ 119304647, 148102320, 186737708, 238609294, 286331153, +/* 15 */ 119304647 ,148102320 ,186737708 ,238609294 ,286331153 };
Signature · 1 line
Jean Sacren
Quoted 11 lines · Jean Sacren
From: Alexey Dobriyan <[email protected]>
Date: Mon, 13 Jun 2011 00:35:49 +0300Quoted 6 lines · Jean Sacren
Quoted 2 lines
The fix makes certain so that the size of the initialized arrays doesn't go beyond the boundary set by the array size of 40.
Why would it possibly do that?
With that ',' comma, doesn't it imply there might be the 41st element in the array?
No, that's not how C works.
Quoted 1 line
Despite the fact that that element is bogus.
It's not bogus, it's utterly cromulent. Trailing comma on array initializer was mentioned in the original K&R and is explicitly endorsed by ISO/IEC 9899:1999 6.7.8 paragraph 1.
Quoted 6 lines
Further, if the comma is there, what's the benefit? I know you're cool, but is it cool in code that way as well?
Quoted 2 lines
And it's not a typo.
What is it then?
It is a standard C idiom for defining array contents. If you write
int x[] = {
1,
2,
3
};then when I add a fourth element to your array, I have to modify two lines, and the diff will say
- 3 + 3, + 4
};
whereas if you wrote "3," as the last line of the initializer, the diff would be one line long.
Furthermore, spot the error in this diff:
@@ -3,4 +3,5 @@ char *x[] = {
"quick",
"brown",
"fox"+ "jumped"
};
HTH, HAND,
-andy
Quoted 21 lines · On Sun, 12 Jun 2011 16:09:01 -0700 Andy Isaacson wrote:
Quoted 11 lines · Jean Sacren
From: Alexey Dobriyan <[email protected]>
Date: Mon, 13 Jun 2011 00:35:49 +0300Quoted 6 lines · Jean Sacren
Quoted 2 lines
The fix makes certain so that the size of the initialized arrays doesn't go beyond the boundary set by the array size of 40.
Why would it possibly do that?
With that ',' comma, doesn't it imply there might be the 41st element in the array?
No, that's not how C works.
Quoted 1 line
Despite the fact that that element is bogus.
It's not bogus, it's utterly cromulent. Trailing comma on array initializer was mentioned in the original K&R and is explicitly endorsed by ISO/IEC 9899:1999 6.7.8 paragraph 1.
Quoted 8 lines
Quoted 6 lines
Further, if the comma is there, what's the benefit? I know you're cool, but is it cool in code that way as well?
Quoted 2 lines
And it's not a typo.
What is it then?
It is a standard C idiom for defining array contents. If you write
ack. I once worked on on OS where the common idiom for array inits was:
int x[] = {
1, 2
, 3
};
so that additions only required one line of change.
Quoted 19 lines
int x[] = { 1, 2, 3 };then when I add a fourth element to your array, I have to modify two lines, and the diff will say
(quoted diff) +2
-1- 3 + 3, + 4 };whereas if you wrote "3," as the last line of the initializer, the diff would be one line long.
Furthermore, spot the error in this diff:
Review char *x[] = { · line 7
Quoted 5 lines
(quoted diff) +1
-0@@ -3,4 +3,5 @@ char *x[] = { "quick", "brown", "fox" + "jumped" };
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
From: Andy Isaacson <[email protected]>
Date: Sun, 12 Jun 2011 16:09:01 -0700
Quoted 15 lines
It is a standard C idiom for defining array contents. If you write
int x[] = { 1, 2, 3 };then when I add a fourth element to your array, I have to modify two lines, and the diff will say
(quoted diff) +2
-1- 3 + 3, + 4 };
Quoted 2 lines
whereas if you wrote "3," as the last line of the initializer, the diff would be one line long.
I don't know how to thank you for this. Apparently the patch is bogus.
Quoted 12 lines
Furthermore, spot the error in this diff:
(quoted diff) +1
-0@@ -3,4 +3,5 @@ char *x[] = { "quick", "brown", "fox" + "jumped" };HTH, HAND,
-andy
Signature · 1 line
Jean Sacren
Quoted 2 lines · Jean Sacren
The fix makes certain so that the size of the initialized arrays doesn't go beyond the boundary set by the array size of 40.
Did you notice that gcc as far back as 3.4.6 will whinge *anyhow* if you have too many initializers?
% cat > test9.c
int foo[5] = { 0, 1, 2, 3, 4, 5, 6};
^D
% gcc -c test9.c
test9.c:1:1: warning: excess elements in array initializer [enabled by default] test9.c:1:1: warning: (near initialization for 'foo') [enabled by default] test9.c:1:1: warning: excess elements in array initializer [enabled by default] test9.c:1:1: warning: (near initialization for 'foo') [enabled by default]