C26167
avertissement C26167 : Possibilité de libérer le verrou <lock> dans la fonction <func>.
L'avertissement C26167 ressemble à l'acertissement C26117, excepté que le niveau de confiance est plus bas.Par exemple, la fonction peut contenir des erreurs d'annotation.
Exemple
Le code suivant génère l'avertissement C26167, ainsi que le C26110.
typedef struct _DATA {
CRITICAL_SECTION cs;
} DATA;
_Releases_lock_(p->cs) void Leave(DATA* p) {
LeaveCriticalSection(&p->cs); // OK
}
void ReleaseUnheldLock(DATA* p) { // Warning C26167
int i = 0;
Leave(p); // Warning C26110
}
Le code suivant corrigera ces avertissements.
typedef struct _DATA {
CRITICAL_SECTION cs;
} DATA;
_Releases_lock_(p->cs) void Leave(DATA* p) {
LeaveCriticalSection( &p->cs );
}
void ReleaseUnheldLock( DATA* p ) {
EnterCriticalSection( &p->cs );
int i = 0;
Leave(p);
}