Closed
Bug 229289
Opened 21 years ago
Closed 21 years ago
Unused variable 'i' in pk11_DestroySessionObjectData(), lib/softoken/pkcs11u.c
Categories
(NSS :: Libraries, defect, P3)
Tracking
(Not tracked)
RESOLVED
FIXED
3.9.1
People
(Reporter: wtc, Assigned: rrelyea)
References
Details
Attachments
(1 file, 1 obsolete file)
3.61 KB,
patch
|
rrelyea
:
review-
|
Details | Diff | Splinter Review |
In lib/softoken/pkcs11u.c, rev. 1.53, function
pk11_DestroySessionObjectData(), the local variable 'i'
is unused if neither PKCS11_STATIC_ATTRIBUTES nor
PKCS11_REF_COUNT_ATTRIBUTES is defined.
Reporter | ||
Comment 1•21 years ago
|
||
I hope there is a more elegant way to fix this compiler
warning.
Comment 2•21 years ago
|
||
The point is whether the two defines can be true at the same time or not ?
If they can, as the current code implies,
I see 3 possibilities:
Y1) 2 inside blocks like "{ int i; for( i=...) {...} }"
which you did not accept in bug 90906.
Y2) double #ifdef
which you propose, and seems satisfactory/best.
Y3) 2 inside blocks like "{ for( int i=...) {...} }"
which is a simple "enhancement" of my Y1 proposal :->
In Y1 and Y3, the outer block delimiters are needed in case the compiler deals
with the |for| in the "old-style".
If they can't, the best way becomes
N1) use #elif, combined with Y3 without the outer block delimiters.
Assignee | ||
Comment 3•21 years ago
|
||
I don't know where the code implies that they can both be set? That fact is they
can't. There are 3 (not 4) allocation strategies. The following comment is from
pkcs11i.h where these values are defined.
-----------------------------------------
/*
* Attribute Allocation strategy:
*
* 1) static allocation (PKCS11_STATIC_ATTRIBUTES set
* PKCS11_REF_COUNT_ATTRIBUTES not set)
* Attributes are pre-allocated as part of the session object and used from
* the object array.
*
* 2) heap allocation with ref counting (PKCS11_STATIC_ATTRIBUTES not set
* PKCS11_REF_COUNT_ATTRIBUTES set)
* Attributes are allocated from the heap when needed and freed when their
* reference count goes to zero.
*
* 3) arena allocation (PKCS11_STATIC_ATTRIBUTES not set
* PKCS11_REF_COUNT_ATTRIBUTE not set)
* Attributes are allocated from the arena when needed and freed only when
* the object goes away.
*/
#define PKCS11_STATIC_ATTRIBUTES
/*#define PKCS11_REF_COUNT_ATTRIBUTES */
----------------------------------------------------------
moot arguments:
If they both could have been defined, I like Wan-Teh's solution the best of the
options given. Y1 is counter to NSS style (NSS prefers not to create lots of
nexted blocks used for nothing more than variable declarations), and Y3 isn't
valid C code (It's C++ and wouldn't necessarily compile in .c files).
I'm not sure what you mean by 'using elif' (again, using 'Y3' doesn't work on
'C' code). You could just simply pull in the declarations to the top of the
#if's, but I don't like this solution because it could break if there is some
future additional code added at the 'top' of this function (remember this is 'C'
code, and all variables must be declared at the beginning of the function). So
if we must silence the warnings, then I suggest taking Wan-Teh's patch.
BTW on the PKCS11_STATIC_ATTRIBUTES define gets regular testing.
bob
Updated•21 years ago
|
Attachment #137890 -
Attachment description: A patch → (Av1) warning fix
Attachment #137890 -
Flags: review?(rrelyea0264)
Comment 4•21 years ago
|
||
Comment 5•21 years ago
|
||
Comment on attachment 138452 [details] [diff] [review]
(Bv1) trivial code cleanup
I have no compiler: Could you compile/test/review it ? Thanks.
Attachment #138452 -
Flags: review?(rrelyea0264)
Comment 6•21 years ago
|
||
Re comment 3:
Thanks for your explanation(s);
I stand corrected on C/C++ syntax; (then, do go for (Y2) Av1 patch !)
What I meant by implies/#elif is "solved" by Bv1 patch...
Assignee | ||
Updated•21 years ago
|
Attachment #137890 -
Flags: review?(rrelyea0264) → review+
Reporter | ||
Comment 7•21 years ago
|
||
Comment on attachment 137890 [details] [diff] [review]
(Av1) warning fix
[Checked in: Comment 7]
I checked in this patch on the NSS trunk.
Reporter | ||
Comment 8•21 years ago
|
||
Comment on attachment 138452 [details] [diff] [review]
(Bv1) trivial code cleanup
This patch seems to consist of adding or deleting
blank lines and changing #else and #ifdef to
#elif defined. All of these changes are a matter
of personal taste. So I recommend not taking this
patch.
Reporter | ||
Updated•21 years ago
|
Priority: -- → P3
Target Milestone: --- → 3.10
Updated•21 years ago
|
Attachment #137890 -
Attachment description: (Av1) warning fix → (Av1) warning fix
[Checked in: Comment 7]
Attachment #137890 -
Attachment is obsolete: true
Comment 9•21 years ago
|
||
Comment on attachment 138452 [details] [diff] [review]
(Bv1) trivial code cleanup
*blank lines:
(I could prepare another patch without them)
*#elseif:
In my point of view, it simplifies the code;
and make it more explicit: having separate #if (can)"implies" that the two
blocks could be true at the same time :-(
(Let's wait for 'r?'.)
Reporter | ||
Comment 10•21 years ago
|
||
The fix for the compiler warning was also checked into
the NSS_3_9_BRANCH, so I'm marking this bug fixed with
target milestone NSS 3.9.1.
Status: NEW → RESOLVED
Closed: 21 years ago
Resolution: --- → FIXED
Target Milestone: 3.10 → 3.9.1
Comment 11•21 years ago
|
||
(In reply to comment #9)
> (From update of attachment 138452 [details] [diff] [review])
>
> (Let's wait for 'r?'.)
What about this proposed patch then ?
Reporter | ||
Comment 12•21 years ago
|
||
Serge, the purpose of this bug is to fix the
compiler warning. It has been fixed.
The #elif changes in your patch might be worth
taking. I'll let Bob decide. You should attach
a new patch without the white space changes. In
any case, it is just code cleanup and is unrelated
to the compiler warning I originally reported.
Assignee | ||
Comment 13•21 years ago
|
||
Comment on attachment 138452 [details] [diff] [review]
(Bv1) trivial code cleanup
OK, I took too long getting to this... the r- is for one trivial matters, which
if corrected the code can be checked in.
The patch tries to factor out the ending '}' around lines
2232/2228 and 2248/2241. If you change just this, the patch is approved without
further review (including white space changes).
1) The code is easier to read and understand if each if the ending brace is not
factored out, and
2) factoring the brace out will confuse vi's brace matching algorithms.
Attachment #138452 -
Flags: review?(rrelyea0264) → review-
You need to log in
before you can comment on or make changes to this bug.
Description
•