This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Title: Incorrect indentation under “else” in _bsddb.c
Type: compile error Stage: resolved
Components: Extension Modules Versions: Python 2.7
Status: closed Resolution: duplicate
Dependencies: Superseder: _bsddb: else misleadingly indented
View: 30257
Assigned To: Nosy List: gregory.p.smith, martin.panter
Priority: normal Keywords:

Created on 2016-09-14 12:36 by martin.panter, last changed 2022-04-11 14:58 by admin. This issue is now closed.

Messages (1)
msg276422 - (view) Author: Martin Panter (martin.panter) * (Python committer) Date: 2016-09-14 12:36
Compiling Python 2.7 gives:

/home/proj/python/cpython/Modules/_bsddb.c: In function ‘newDBObject’:
/home/proj/python/cpython/Modules/_bsddb.c:936:5: warning: this ‘else’ clause does not guard... [-Wmisleading-indentation]
/home/proj/python/cpython/Modules/_bsddb.c:938:9: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the ‘else’
         self->moduleFlags.cursorSetReturnsNone = DEFAULT_CURSOR_SET_RETURNS_NONE;

The code in question was changed a long time ago in revision defa1d825b08:

     if (self->myenvobj)
-        self->getReturnsNone = self->myenvobj->getReturnsNone;
+        self->moduleFlags = self->myenvobj->moduleFlags;
-        self->getReturnsNone = GET_RETURNS_NONE_DEFAULT;
+        self->moduleFlags.getReturnsNone = DEFAULT_GET_RETURNS_NONE;
+        self->moduleFlags.cursorSetReturnsNone = DEFAULT_CURSOR_SET_RETURNS_NONE;

It looks like the solution is to group both statements with braces, but I don’t know this module, so I can’t be sure, and I don’t know how to test it.
Date User Action Args
2022-04-11 14:58:36adminsetgithub: 72336
2017-05-03 12:46:52martin.pantersetstatus: open -> closed
superseder: _bsddb: else misleadingly indented
resolution: duplicate
stage: test needed -> resolved
2016-09-14 12:36:47martin.pantercreate