Во всех мануалах громко и нецензурно кричат о том, что надо писать строго одну точку выхода из функции в самом ее конце, мол так надежнее - все unlock'и в одном месте, нельзя напортачить с забытым разлоком и проч.
А скажите, господа, а как предполагается тогда писать такие функции? Через миллионы вложенных if'ов? А как это поможет читабельности и надежности?
               }
              }
             }
            }
           }
          }
         }
        }
       }
      }
     }
    }
   }
  }
 }
}
Собственно код, на котором мне бомбануло:
static YGGBool compare_records_str(CML_Node * haystack1, CML_Node * haystack2, char * needle)
{
    CML_Node * finder1;
    CML_Node * finder2;
    if (CML_NodeFindString(haystack1, needle, &finder1)) return YGG_FALSE;
    if (CML_NodeFindString(haystack2, needle, &finder2)) return YGG_FALSE;
    if (!finder1->data.string) return YGG_FALSE;
    if (!finder2->data.string) return YGG_FALSE;
    if (strcmp(finder1->data.string, finder2->data.string)) return YGG_FALSE;
    return YGG_TRUE;
}











