int main() { StartClock(); unsigned int *no_init_ptr; unsigned int *ptr; struct UnsignedInt_Type1 ptr_str; ((ptr_str.Void_Type0::ptr = ptr , ptr_str.addr = (reinterpret_cast < unsigned long long > ((&ptr)))) , ((Assign(&ptr_str,UnsignedInt_Type1_Cast_Void_Type0(malloc_overload(400UL))) , ptr = ptr_str.Void_Type0::ptr))); unsigned int *ptr2; struct UnsignedInt_Type1 ptr2_str; ((ptr2_str.Void_Type0::ptr = ptr2 , ptr2_str.addr = (reinterpret_cast < unsigned long long > ((&ptr2)))) , ((Assign(&ptr2_str,UnsignedInt_Type1_Cast_Void_Type0(malloc_overload(40UL))) , ptr2 = ptr2_str.Void_Type0::ptr))); unsigned int *ptr_index; unsigned int counter = 0U; struct UnsignedInt_Type1 UnsignedInt_Type1_ovl_2; struct UnsignedInt_Type1 UnsignedInt_Type1_ovl_3; for ((((UnsignedInt_Type1_ovl_2 = create_struct(ptr_index,(reinterpret_cast < unsigned long long > ((&ptr_index)))) , UnsignedInt_Type1_Assign_UnsignedInt_Type1_UnsignedInt_Type1((reinterpret_cast < unsigned long long > ((&UnsignedInt_Type1_ovl_2))),ptr_str)) , ((unsigned int *)( *(reinterpret_cast < void ** > (UnsignedInt_Type1_ovl_2.addr)))) = UnsignedInt_Type1_ovl_2.Void_Type0::ptr) , UnsignedInt_Type1_ovl_2); b_LessThan_UnsignedInt_Type1_UnsignedInt_Type1(create_struct(ptr_index,(reinterpret_cast < unsigned long long > ((&ptr_index)))),UnsignedInt_Type1_Add_UnsignedInt_Type1_i(ptr_str,100)); (((UnsignedInt_Type1_ovl_3 = create_struct(ptr_index,(reinterpret_cast < unsigned long long > ((&ptr_index)))) , UnsignedInt_Type1_Increment_UnsignedInt_Type1((reinterpret_cast < unsigned long long > ((&UnsignedInt_Type1_ovl_3))))) , ((unsigned int *)( *(reinterpret_cast < void ** > (UnsignedInt_Type1_ovl_3.addr)))) = UnsignedInt_Type1_ovl_3.Void_Type0::ptr) , UnsignedInt_Type1_ovl_3)) { *Deref(create_struct(ptr_index,(reinterpret_cast < unsigned long long > ((&ptr_index))))) = counter++; } struct UnsignedInt_Type1 UnsignedInt_Type1_ovl_4; struct UnsignedInt_Type1 UnsignedInt_Type1_ovl_5; for ((((UnsignedInt_Type1_ovl_4 = create_struct(ptr_index,(reinterpret_cast < unsigned long long > ((&ptr_index)))) , UnsignedInt_Type1_Assign_UnsignedInt_Type1_UnsignedInt_Type1((reinterpret_cast < unsigned long long > ((&UnsignedInt_Type1_ovl_4))),UnsignedInt_Type1_Sub_UnsignedInt_Type1_i(UnsignedInt_Type1_Add_UnsignedInt_Type1_i(ptr_str,100),1))) , ((unsigned int *)( *(reinterpret_cast < void ** > (UnsignedInt_Type1_ovl_4.addr)))) = UnsignedInt_Type1_ovl_4.Void_Type0::ptr) , UnsignedInt_Type1_ovl_4); b_GreaterOrEqual_UnsignedInt_Type1_UnsignedInt_Type1(create_struct(ptr_index,(reinterpret_cast < unsigned long long > ((&ptr_index)))),ptr_str); (((UnsignedInt_Type1_ovl_5 = create_struct(ptr_index,(reinterpret_cast < unsigned long long > ((&ptr_index)))) , UnsignedInt_Type1_Decrement_UnsignedInt_Type1((reinterpret_cast < unsigned long long > ((&UnsignedInt_Type1_ovl_5))))) , ((unsigned int *)( *(reinterpret_cast < void ** > (UnsignedInt_Type1_ovl_5.addr)))) = UnsignedInt_Type1_ovl_5.Void_Type0::ptr) , UnsignedInt_Type1_ovl_5)) { printf("%u\n", *Deref(create_struct(ptr_index,(reinterpret_cast < unsigned long long > ((&ptr_index)))))); } EndClock(); return 1; }
int main() { StartClock(); int *ptr = (int *)(malloc((100 * (sizeof(int ))))); int *ptr2 = (int *)(malloc((10 * (sizeof(int ))))); (__builtin_expect((!(ptr2 != 0L)),0))?__assert_rtn(__func__,"/Users/vanka1/research/compilers/rose_public/rose_build/projects/RTC/pointer_example.cpp",17,"ptr2 != NULL") : ((void )0); int *start_ptr = ptr; int *start_ptr2 = ptr2; // Crossing the boundary of ptr. The condition should // be less than, not less than or equal to // ptr[PTR_SIZE] is an out-of-bounds access for (int index = 0; index <= (100 + 1); index++) { *ptr = index; ptr++; } // Resetting ptr to start_ptr, so that it points to the beginning // of the allocation ptr = start_ptr; // Printing what we wrote above for (int index = 0; index <= (100 + 1); index++) { printf("ptr[%d]=%d\n",index, *ptr); ptr++; } #if 0 // Resetting ptr to start_ptr, so that it points to the beginning // of the allocation // Memsetting ptr and ptr2 allocations, in one go. // This is also crossing the boundaries of ptr. It assumes that // ptr and ptr2 are in contiguous locations // Resetting ptr to start_ptr, so that it points to the beginning // of the allocation // Printing ptr and ptr2 *and* one more beyond ptr2, all using // ptr! This still works since malloc asks for more than it needs // always. #endif (__builtin_expect((!(ptr2 != 0L)),0))?__assert_rtn(__func__,"/Users/vanka1/research/compilers/rose_public/rose_build/projects/RTC/pointer_example.cpp",68,"ptr2 != NULL") : ((void )0); printf("Before free ptr2\n"); fflush(0L); free(ptr2); #if 0 #if 0 // Retrying the print above, after freeing ptr2. This should // crash--- and it does! #endif // Allocating another pointer // This allocation might take the place of ptr2. In this case, // printing ptr beyond its boundaries should be okay // Nope this also crashes! #endif EndClock(); return 1; }
int main() { StartClock(); struct UIntStruct ptr_structed0 = UInt_Void_Cast(malloc_wrap(((size_t )(((unsigned long long )100) * (sizeof(int )))))); struct UIntStruct ptr2_structed1 = UInt_Void_Cast(malloc_wrap(((size_t )(((unsigned long long )10) * (sizeof(int )))))); struct UIntStruct start_ptr_structed2 = ptr_structed0; struct UIntStruct start_ptr2_structed3 = ptr2_structed1; struct UIntStruct start_ptr3_structed4 = UInt_Void_Cast(malloc_wrap(((size_t )(((unsigned long long )100) * (sizeof(unsigned int )))))); struct UIntStruct start_ptr4_structed5 = start_ptr2_structed3; #if 0 #endif EndClock(); return 1; }
byte PlayALevel(byte map) { int lastTime = 1; byte exitcode = 0; if (!InitLevel(map)) { mapToGoTo = 255; return LEVEL_ABORT; } exitcode = LEVEL_PLAYING; gameMode = GAMEMODE_PLAY; CDMessingTime = 0; garbageTime = 0; UpdateGuys(curMap, &curWorld); // this will force the camera into the right position // it also makes everybody animate by one frame, but no one will // ever notice while (exitcode == LEVEL_PLAYING) { lastTime += TimeLength() - CDMessingTime; StartClock(); if (gameMode == GAMEMODE_PLAY) HandleKeyPresses(); exitcode = LunaticRun(&lastTime); LunaticDraw(); if (lastKey == 27 && gameMode == GAMEMODE_PLAY) { InitPauseMenu(); gameMode = GAMEMODE_MENU; } if (!gamemgl->Process()) { exitcode = LEVEL_ABORT; mapToGoTo = 255; } EndClock(); } ExitLevel(); return exitcode; }
int main() { StartClock(); struct UIntStruct ptr_structed0 = UInt_Void_Cast(malloc_wrap(((size_t )(((unsigned long long )100) * (sizeof(int )))))); struct UIntStruct ptr2_structed1 = UInt_Void_Cast(malloc_wrap(((size_t )(((unsigned long long )10) * (sizeof(int )))))); struct UIntStruct start_ptr_structed2 = ptr_structed0; struct UIntStruct start_ptr2_structed3 = ptr2_structed1; struct UIntStruct start_ptr3_structed4 = UInt_Void_Cast(malloc_wrap(((size_t )(((unsigned long long )100) * (sizeof(unsigned int )))))); struct UIntStruct start_ptr4_structed5 = start_ptr2_structed3; #if 1 *UInt_Deref(start_ptr_structed2) = 1; *UInt_Deref(start_ptr2_structed3) = 1; *UInt_Deref(ptr_structed0) = 3; *UInt_Deref(ptr2_structed1) = 9; #endif for (struct UIntStruct new_ptr_structed6 = start_ptr_structed2; UInt_UInt_Struct_LessThan(new_ptr_structed6,UInt_Int_Normal_Add(start_ptr_structed2,100)); new_ptr_structed6 = UInt_UInt_Normal_Add(new_ptr_structed6,1U)) { *UInt_Deref(new_ptr_structed6) = 5; printf("%u\n", *UInt_Deref(new_ptr_structed6)); } EndClock(); return 1; }
byte WorldPickerPause(void) { int lastTime = 1; byte exitcode = LEVEL_PLAYING; InitPauseMenu(); SetGiveUpText(2); while (exitcode == LEVEL_PLAYING) { lastTime += TimeLength(); StartClock(); exitcode = WorldPauseRun(&lastTime); WorldPauseDraw(); if (!gamemgl->Process()) { exitcode = WORLD_QUITGAME; mapToGoTo = 255; } EndClock(); } return exitcode; }
/*------------------------------------------------ subclass procedure of the clock --------------------------------------------------*/ LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) // for tooltip { case WM_MOUSEMOVE: case WM_LBUTTONDOWN: case WM_RBUTTONDOWN: case WM_MBUTTONDOWN: case WM_LBUTTONUP: case WM_RBUTTONUP: case WM_MBUTTONUP: #if TC_ENABLE_WHEEL case WM_MOUSEWHEEL: #endif OnTooltipMouseMsg(hwnd, message, wParam, lParam); break; } switch(message) { /* -------- drawing & sizing ------------- */ case WM_PAINT: { PAINTSTRUCT ps; HDC hdc; if(g_bNoClock) break; hdc = BeginPaint(hwnd, &ps); OnPaint(hwnd, hdc, NULL); EndPaint(hwnd, &ps); return 0; } case WM_ERASEBKGND: break; case (WM_USER+100): // a message requesting for clock size if(g_bNoClock) break; // sent from parent window return OnCalcRect(hwnd); case WM_WINDOWPOSCHANGING: // size arrangement if(g_bNoClock) break; OnWindowPosChanging(hwnd, (LPWINDOWPOS)lParam); break; case WM_SIZE: if(g_bNoClock) break; CreateClockDC(hwnd); // create offscreen DC return 0; case WM_SYSCOLORCHANGE: case WM_THEMECHANGED: if(g_bNoClock) break; CreateClockDC(hwnd); // create offscreen DC InvalidateRect(hwnd, NULL, FALSE); #if TC_ENABLE_DESKTOPICON SetDesktopIcons(); // desktop.c #endif return 0; case WM_WININICHANGE: case WM_TIMECHANGE: case (WM_USER+101): case WM_SETFOCUS: case WM_KILLFOCUS: if(g_bNoClock) break; InvalidateRect(hwnd, NULL, FALSE); return 0; /* -------- Timers ------------- */ case WM_TIMER: switch (wParam) { case IDTIMER_MAIN: OnTimerMain(hwnd); return 0; #if TC_ENABLE_SYSINFO case IDTIMER_SYSINFO: OnTimerSysInfo(); // sysinfo.c #if TC_ENABLE_DESKTOPICON SetDesktopIcons(); // desktop.c #endif return 0; #endif } if(g_bNoClock) break; return 0; /* -------- Mouse messages ------------- */ case WM_LBUTTONDOWN: // mouse button is down case WM_RBUTTONDOWN: case WM_MBUTTONDOWN: case WM_XBUTTONDOWN: return OnMouseDown(hwnd, message, wParam, lParam); case WM_LBUTTONUP: // mouse button is up case WM_RBUTTONUP: case WM_MBUTTONUP: case WM_XBUTTONUP: return OnMouseUp(hwnd, message, wParam, lParam); case WM_MOUSEMOVE: return 0; case WM_NCRBUTTONUP: return 0; case WM_CONTEXTMENU: PostMessage(g_hwndTClockMain, WM_CONTEXTMENU, wParam, lParam); return 0; case WM_NCHITTEST: // not to pass to g_oldWndProc return DefWindowProc(hwnd, message, wParam, lParam); case WM_MOUSEACTIVATE: return MA_ACTIVATE; #if TC_ENABLE_MOUSEDROP case WM_DROPFILES: // files are dropped PostMessage(g_hwndTClockMain, WM_DROPFILES, wParam, lParam); return 0; #endif #if TC_ENABLE_WHEEL case WM_MOUSEWHEEL: // the mouse wheel is rotated PostMessage(g_hwndTClockMain, WM_MOUSEWHEEL, wParam, lParam); return 0; #endif case WM_NOTIFY: // tooltip { LRESULT res; if(OnTooltipNotify(hwnd, &res, (LPNMHDR)lParam)) return res; break; } /* messages sent from other program */ case CLOCKM_EXIT: // clean up all EndClock(hwnd); return 0; case CLOCKM_REFRESHCLOCK: // refresh the clock OnRefreshClock(hwnd); return 0; case CLOCKM_DELUSRSTR: // clear user strings InitUserStr(); return 0; #if TC_ENABLE_TASKBAR case CLOCKM_REFRESHTASKBAR: // refresh other elements than clock OnRefreshTaskbar(hwnd); return 0; #endif #if TC_ENABLE_STARTMENU case CLOCKM_REFRESHSTARTMENU: // refresh Start menu OnRefreshStartMenu(hwnd); return 0; #endif case CLOCKM_REFRESHTOOLTIP: // refresh tooltip OnRefreshTooltip(hwnd); return 0; case CLOCKM_BLINK: // blink the clock g_nBlink = 2; m_nBlinkSec = lParam; if(lParam) m_nBlinkTick = GetTickCount(); return 0; case CLOCKM_COPY: // copy format to clipboard OnCopy(hwnd, NULL); return 0; #if TC_ENABLE_VOLUME case CLOCKM_VOLCHANGE: OnVolumeChange(hwnd); return 0; #endif case WM_COPYDATA: OnCopyData(hwnd, (HWND)wParam, (COPYDATASTRUCT*)lParam); return 0; /* WM_DESTROY is sent only when Win95+IE4/98/Me is shut down */ case WM_DESTROY: OnDestroy(hwnd); // main2.c break; } return CallWindowProc(g_oldWndProc, hwnd, message, wParam, lParam); }