\r
_PDCLIB_BEGIN_EXTERN_C\r
#define _PDCLIB_ONCE_FLAG_INIT 0\r
-#define _PDCLIB_ONCE_FLAG_IS_DONE(_f) ((_f) == 1)\r
+#define _PDCLIB_ONCE_FLAG_IS_DONE(_f) (*(_f) == 1)\r
typedef char _PDCLIB_once_flag;\r
\r
void _PDCLIB_call_once(_PDCLIB_once_flag *flag, void (*func)(void));\r
\r
void _PDCLIB_call_once(_PDCLIB_once_flag *flag, void (*func)(void))\r
{\r
- if(*flag != _PDCLIB_ONCE_FLAG_DONE) {\r
+ if(!_PDCLIB_ONCE_FLAG_IS_DONE(flag)) {\r
func();\r
- *flag = _PDCLIB_ONCE_FLAG_DONE;\r
+ *flag = 1;\r
}\r
}\r
#endif\r