bug-524691.c
来自「Small Device C Compiler 面向Inter8051」· C语言 代码 · 共 61 行
C
61 行
/* Division by powers of two. */#include <testfwk.h>#if defined __mcs51 || defined __ds390 || defined __xa51#define XDATA xdata#else#define XDATA#endiftypedef unsigned int UINT;typedef struct _HeapEntryState{ void *pBase; UINT uFlags;} HeapEntryState;static HeapEntryState *_getHeapEntryState(void *p, HeapEntryState *pStates, UINT nStateEntries){ int uLeft = -1, uRight = nStateEntries, uMiddle; while (uRight - uLeft > 1) { int iDiff; uMiddle = (uLeft + uRight)/2; /* A divide by zero is added just before iDiff is assigned */ iDiff = pStates[uMiddle].pBase - p; if (iDiff > 0) { uRight = uMiddle; } else if (iDiff < 0) { uLeft = uMiddle; } else { return pStates + uMiddle; } } return NULL;}voidtestDivByZero(void){ HeapEntryState aStates[] = { { (void XDATA *)1, 0 } }; void *p = (void XDATA *)0x1234; ASSERT(_getHeapEntryState(p, aStates, 1) == NULL); aStates[0].pBase = p; ASSERT(_getHeapEntryState(p, aStates, 1) == aStates + 0);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?