I received the same message sent directly by Coverity Scan. Best, Scuri
Em sáb, 25 de mai de 2019 às 08:08, Ranier VF <ranier_...@hotmail.com> escreveu: > Hi, > This a new report by Coverity about IUP 3.27 Windows port. > Best regards, > Ranier Vilela > ________________________________________ > De: scan-ad...@coverity.com <scan-ad...@coverity.com> > Enviado: sábado, 25 de maio de 2019 03:02 > Para: ranier_...@hotmail.com > Assunto: New Defects reported by Coverity Scan for IUP - Portable User > Interface > > Hi, > > Please find the latest report on new defect(s) introduced to IUP - > Portable User Interface found with Coverity Scan. > > 24 new defect(s) introduced to IUP - Portable User Interface found with > Coverity Scan. > 37 defect(s), reported by Coverity Scan earlier, were marked fixed in the > recent build analyzed by Coverity Scan. > > New defect(s) Reported-by: Coverity Scan > Showing 20 of 24 defect(s) > > > ** CID 341021: Parse warnings (PARSE_ERROR) > /include/atlbase.h: 73 in () > > > > ________________________________________________________________________________________________________ > *** CID 341021: Parse warnings (PARSE_ERROR) > /include/atlbase.h: 73 in () > 67 #error ATL requires C++ compilation (use a .cpp suffix) > 68 #endif > 69 #ifndef ATL_NO_LEAN_AND_MEAN > 70 #define ATL_NO_LEAN_AND_MEAN > 71 #endif > 72 > >>> CID 341021: Parse warnings (PARSE_ERROR) > >>> cannot open source file "atldef.h" > 73 #include <atldef.h> > 74 > 75 #ifndef _WINSOCKAPI_ > 76 #include <winsock2.h> > 77 #endif > 78 > > ** CID 341020: Resource leaks (RESOURCE_LEAK) > /src/iup_globalsdlg.c: 239 in iGlobalsUpdate() > > > > ________________________________________________________________________________________________________ > *** CID 341020: Resource leaks (RESOURCE_LEAK) > /src/iup_globalsdlg.c: 239 in iGlobalsUpdate() > 233 IupSetAttributeId(list1, "", j + 1, attribs[i].name); > 234 IupSetIntId(list1, "_IUP_READONLY", j + 1, > attribs[i].readonly); > 235 j++; > 236 } > 237 > 238 total_count = iupGetFunctions(NULL, 0); > >>> CID 341020: Resource leaks (RESOURCE_LEAK) > >>> Overwriting "attr_names" in "attr_names = (signed char > **)malloc(total_count * 4U)" leaks the storage that "attr_names" points to. > 239 attr_names = (char **)malloc(total_count * sizeof(char *)); > 240 attr_count = iupGetFunctions(attr_names, total_count); > 241 for (i = 0; i < attr_count; i++) > 242 IupSetAttributeId(list3, "", i + 1, attr_names[i]); > 243 > 244 free(attr_names); > > ** CID 341019: Error handling issues (CHECKED_RETURN) > /src/win/iupwin_label.c: 301 in winLabelMsgProc() > > > > ________________________________________________________________________________________________________ > *** CID 341019: Error handling issues (CHECKED_RETURN) > /src/win/iupwin_label.c: 301 in winLabelMsgProc() > 295 } > 296 case WM_XBUTTONUP: > 297 case WM_LBUTTONUP: > 298 case WM_MBUTTONUP: > 299 case WM_RBUTTONUP: > 300 { > >>> CID 341019: Error handling issues (CHECKED_RETURN) > >>> Calling "iupwinButtonUp" without checking return value (as is done > elsewhere 8 out of 10 times). > 301 iupwinButtonUp(ih, msg, wp, lp); > 302 break; > 303 } > 304 case WM_MOUSEMOVE: > 305 { > 306 if (iupwinMouseMove(ih, msg, wp, lp)) > > ** CID 341018: Resource leaks (RESOURCE_LEAK) > /srcfiledlg/iupwin_newfiledlg.cpp: 852 in winNewFileDlgPopup(Ihandle_ *, > int, int)() > > > > ________________________________________________________________________________________________________ > *** CID 341018: Resource leaks (RESOURCE_LEAK) > /srcfiledlg/iupwin_newfiledlg.cpp: 852 in winNewFileDlgPopup(Ihandle_ *, > int, int)() > 846 > 847 if (opfd) > 848 opfd->Release(); > 849 if (spfd) > 850 spfd->Release(); > 851 > >>> CID 341018: Resource leaks (RESOURCE_LEAK) > >>> Variable "directory" going out of scope leaks the storage it > points to. > 852 return IUP_NOERROR; > 853 } > 854 > 855 extern "C" { > 856 /* the only exported function, > 857 once called it will replace regular IupFileDlg */ > > ** CID 341017: Security best practices violations (STRING_OVERFLOW) > /src/win/iupwin_image_wdl.c: 383 in iupwinWdlImageGetImage() > > > > ________________________________________________________________________________________________________ > *** CID 341017: Security best practices violations (STRING_OVERFLOW) > /src/win/iupwin_image_wdl.c: 383 in iupwinWdlImageGetImage() > 377 if (make_inactive) > 378 strcat(cache_name, "_INACTIVE"); > 379 > 380 if (iupAttribGet(ih, "_IUP_BGCOLOR_DEPEND") && bgcolor) > 381 { > 382 strcat(cache_name, "("); > >>> CID 341017: Security best practices violations (STRING_OVERFLOW) > >>> You might overrun the 100-character fixed-size string "cache_name" > by copying "bgcolor" without checking the length. > 383 strcat(cache_name, bgcolor); > 384 strcat(cache_name, ")"); > 385 bg_concat = 1; > 386 } > 387 > 388 /* Check for an already created native image */ > > ** CID 341016: Null pointer dereferences (FORWARD_NULL) > > > > ________________________________________________________________________________________________________ > *** CID 341016: Null pointer dereferences (FORWARD_NULL) > /src/iup_layoutdlg.c: 1668 in iLayoutPropertiesIdTextChanged_CB() > 1662 else > 1663 IupSetAttribute(txt1, "VALUE", "NULL"); > 1664 > 1665 if (strstr(name, "COLOR") != NULL) > 1666 { > 1667 Ihandle* colorbut = IupGetDialogChild(id_text, > "SETCOLORBUT"); > >>> CID 341016: Null pointer dereferences (FORWARD_NULL) > >>> Passing null pointer "value" to "IupStoreAttribute", which > dereferences it. > 1668 IupStoreAttribute(colorbut, "BGCOLOR", value); > 1669 } > 1670 } > 1671 return IUP_DEFAULT; > 1672 } > 1673 > > ** CID 341015: Integer handling issues (DIVIDE_BY_ZERO) > > > > ________________________________________________________________________________________________________ > *** CID 341015: Integer handling issues (DIVIDE_BY_ZERO) > /src/iup_flatscrollbar.c: 1047 in iupFlatScrollBarSetChildrenCurrentSize() > 1041 iFlatScrollBarCalcHandler(ih->currentheight, 0, ymax, dy, > sb_size, posy, &pos1, &pos2); > 1042 iupBaseSetCurrentSize(sb_vert, sb_size, pos2 - pos1 + 1, > shrink); /* sb_vert->currentheight == dy in pixels */ > 1043 } > 1044 > 1045 if (!iupAttribGetBoolean(ih, "XHIDDEN")) > 1046 { > >>> CID 341015: Integer handling issues (DIVIDE_BY_ZERO) > >>> In function call "iFlatScrollBarCalcHandler", division by > expression "xmax" which may be zero has undefined behavior. > 1047 iFlatScrollBarCalcHandler(ih->currentwidth, 0, xmax, dx, > sb_size, posx, &pos1, &pos2); > 1048 iupBaseSetCurrentSize(sb_horiz, pos2 - pos1 + 1, sb_size, > shrink); /* sb_horiz->currentwidth == dx in pixels */ > 1049 } > 1050 } > 1051 else > 1052 { > > ** CID 341014: Error handling issues (NEGATIVE_RETURNS) > /src/iup_flattabs.c: 175 in iFlatTabsUpdateScrollPos() > > > > ________________________________________________________________________________________________________ > *** CID 341014: Error handling issues (NEGATIVE_RETURNS) > /src/iup_flattabs.c: 175 in iFlatTabsUpdateScrollPos() > 169 > 170 if (tabType == ITABS_TOP || tabType == ITABS_BOTTOM) > 171 extra_size = iFlatTabsGetExtraWidth(ih, extra_buttons, > img_position, horiz_padding); > 172 else > 173 extra_size = iFlatTabsGetExtraHeight(ih, extra_buttons, > img_position, horiz_padding); > 174 > >>> CID 341014: Error handling issues (NEGATIVE_RETURNS) > >>> "count" is passed to a parameter that cannot be negative. > 175 visible_width = calloc(count, sizeof(int)); > 176 > 177 check_size = 0; > 178 for (pos = scroll_pos, child = ih->firstchild; child && pos <= > child_pos; child = child->brother, pos++) > 179 { > 180 int tabvisible = iupAttribGetBooleanId(ih, "TABVISIBLE", > pos); > > ** CID 341013: Resource leaks (RESOURCE_LEAK) > /src/win/iupwin_draw.c: 91 in iupwinDrawThemeInit() > > > > ________________________________________________________________________________________________________ > *** CID 341013: Resource leaks (RESOURCE_LEAK) > /src/win/iupwin_draw.c: 91 in iupwinDrawThemeInit() > 85 { > 86 winThemeOpenData = > (_winThemeOpenData)GetProcAddress(hinstDll, "OpenThemeData"); > 87 winThemeCloseData = > (_winThemeCloseData)GetProcAddress(hinstDll, "CloseThemeData"); > 88 winThemeDrawBackground = > (_winThemeDrawBackground)GetProcAddress(hinstDll, "DrawThemeBackground"); > 89 winThemeGetColor = > (_winThemeGetColor)GetProcAddress(hinstDll, "GetThemeColor"); > 90 } > >>> CID 341013: Resource leaks (RESOURCE_LEAK) > >>> Variable "hinstDll" going out of scope leaks the storage it points > to. > 91 } > 92 } > 93 > 94 static int winDrawGetThemeStateId(int itemState) > 95 { > 96 if (itemState & ODS_DISABLED) > > ** CID 341012: Error handling issues (CHECKED_RETURN) > /src/win/iupwin_button.c: 555 in winButtonMsgProc() > > > > ________________________________________________________________________________________________________ > *** CID 341012: Error handling issues (CHECKED_RETURN) > /src/win/iupwin_button.c: 555 in winButtonMsgProc() > 549 case WM_XBUTTONUP: > 550 case WM_LBUTTONUP: > 551 case WM_MBUTTONUP: > 552 case WM_RBUTTONUP: > 553 { > 554 /* Process BUTTON_CB */ > >>> CID 341012: Error handling issues (CHECKED_RETURN) > >>> Calling "iupwinButtonUp" without checking return value (as is done > elsewhere 8 out of 10 times). > 555 iupwinButtonUp(ih, msg, wp, lp); > 556 > 557 if (!iupObjectCheck(ih)) > 558 { > 559 *result = 0; > 560 return 1; > > ** CID 341011: Security best practices violations (STRING_OVERFLOW) > /srccd/iup_draw_cd.c: 100 in cdfont() > > > > ________________________________________________________________________________________________________ > *** CID 341011: Security best practices violations (STRING_OVERFLOW) > /srccd/iup_draw_cd.c: 100 in cdfont() > 94 is_strikeout = 1; > 95 > 96 sprintf(font, "%s, %s%s%s%s%d", type_face, is_bold ? "Bold " : > "", is_italic ? "Italic " : "", is_underline ? "Underline " : "", > is_strikeout ? "Strikeout " : "", size); > 97 > 98 /* store in native font and manually save font parameters */ > 99 strcpy(ctxcanvas->canvas->native_font, font); > >>> CID 341011: Security best practices violations (STRING_OVERFLOW) > >>> You might overrun the 1024-character fixed-size string > "ctxcanvas->canvas->font_type_face" by copying "type_face" without checking > the length. > 100 strcpy(ctxcanvas->canvas->font_type_face, type_face); > 101 ctxcanvas->canvas->font_style = style; > 102 ctxcanvas->canvas->font_size = size; > 103 > 104 return 0; > 105 } > > ** CID 341010: Possible Control flow issues (DEADCODE) > /src/win/iupwin_label.c: 90 in winLabelDrawImage() > > > > ________________________________________________________________________________________________________ > *** CID 341010: Possible Control flow issues (DEADCODE) > /src/win/iupwin_label.c: 90 in winLabelDrawImage() > 84 x += xpad; > 85 y += ypad; > 86 > 87 iupwinDrawBitmap(hDC, hBitmap, x, y, width, height, width, > height, bpp); > 88 > 89 if (hMask) > >>> CID 341010: Possible Control flow issues (DEADCODE) > >>> Execution cannot reach this statement: "DeleteObject(hMask);". > 90 DeleteObject(hMask); > 91 } > 92 > 93 static void winLabelDrawText(Ihandle* ih, HDC hDC, int rect_width, > int rect_height, UINT itemState) > 94 { > 95 int xpad = ih->data->horiz_padding, > > ** CID 341009: (FORWARD_NULL) > > > > ________________________________________________________________________________________________________ > *** CID 341009: (FORWARD_NULL) > /src/iup_globalsdlg.c: 314 in iGlobalsSet_CB() > 308 else > 309 IupSetStrGlobal(name, value); > 310 > 311 if (strstr(name, "COLOR") != NULL) > 312 { > 313 Ihandle* colorbut = (Ihandle *)iupAttribGetInherit(list1, > "_IUP_COLORBUTTON"); > >>> CID 341009: (FORWARD_NULL) > >>> Passing null pointer "value" to "IupStoreAttribute", which > dereferences it. > 314 IupStoreAttribute(colorbut, "BGCOLOR", value); /* set it > even if it is NULL */ > 315 IupSetStrGlobal("BGCOLOR", value); > 316 } > 317 } > 318 return IUP_DEFAULT; > 319 } > /src/iup_globalsdlg.c: 315 in iGlobalsSet_CB() > 309 IupSetStrGlobal(name, value); > 310 > 311 if (strstr(name, "COLOR") != NULL) > 312 { > 313 Ihandle* colorbut = (Ihandle *)iupAttribGetInherit(list1, > "_IUP_COLORBUTTON"); > 314 IupStoreAttribute(colorbut, "BGCOLOR", value); /* set it > even if it is NULL */ > >>> CID 341009: (FORWARD_NULL) > >>> Passing null pointer "value" to "IupSetStrGlobal", which > dereferences it. > 315 IupSetStrGlobal("BGCOLOR", value); > 316 } > 317 } > 318 return IUP_DEFAULT; > 319 } > 320 > > ** CID 341008: Null pointer dereferences (FORWARD_NULL) > > > > ________________________________________________________________________________________________________ > *** CID 341008: Null pointer dereferences (FORWARD_NULL) > /src/iup_split.c: 374 in iSplitSetColorAttrib() > 368 > 369 static int iSplitSetColorAttrib(Ihandle* ih, const char* value) > 370 { > 371 if (value != NULL && ih->data->showgrip == 0) > 372 IupSetAttribute(ih->firstchild, "STYLE", "FILL"); > 373 > >>> CID 341008: Null pointer dereferences (FORWARD_NULL) > >>> Passing null pointer "value" to "IupSetStrAttribute", which > dereferences it. > 374 IupSetStrAttribute(ih->firstchild, "COLOR", value); > 375 return 0; > 376 } > 377 > 378 static char* iSplitGetColorAttrib(Ihandle* ih) > 379 { > > ** CID 341007: (STRING_OVERFLOW) > /src/iup_layoutdlg.c: 1648 in iLayoutPropertiesIdTextChanged_CB() > /src/iup_layoutdlg.c: 1652 in iLayoutPropertiesIdTextChanged_CB() > > > > ________________________________________________________________________________________________________ > *** CID 341007: (STRING_OVERFLOW) > /src/iup_layoutdlg.c: 1648 in iLayoutPropertiesIdTextChanged_CB() > 1642 Ihandle* txt1 = IupGetDialogChild(id_text, "VALUE1A"); > 1643 Ihandle* list1 = (Ihandle*)iupAttribGetInherit(id_text, > "_IUP_PROPLIST1"); > 1644 char* itemlist1 = IupGetAttribute(list1, "VALUE"); > 1645 if (!itemlist1) > 1646 return IUP_DEFAULT; > 1647 > >>> CID 341007: (STRING_OVERFLOW) > >>> You might overrun the 100-character fixed-size string "name" by > copying the return value of "IupGetAttribute" without checking the length. > 1648 strcpy(name, IupGetAttribute(list1, itemlist1)); > 1649 > 1650 iupClassGetAttribNameInfo(elem->iclass, name, &def_value, > &flags); > 1651 > 1652 strcat(name, id); > 1653 > /src/iup_layoutdlg.c: 1652 in iLayoutPropertiesIdTextChanged_CB() > 1646 return IUP_DEFAULT; > 1647 > 1648 strcpy(name, IupGetAttribute(list1, itemlist1)); > 1649 > 1650 iupClassGetAttribNameInfo(elem->iclass, name, &def_value, > &flags); > 1651 > >>> CID 341007: (STRING_OVERFLOW) > >>> You might overrun the 100-character fixed-size string "name" by > copying "id" without checking the length. > 1652 strcat(name, id); > 1653 > 1654 value = IupGetAttribute(elem, name); > 1655 if (value) > 1656 { > 1657 if (flags&IUPAF_NO_STRING) > > ** CID 341006: Integer handling issues (DIVIDE_BY_ZERO) > > > > ________________________________________________________________________________________________________ > *** CID 341006: Integer handling issues (DIVIDE_BY_ZERO) > /src/iup_flatscrollbar.c: 1083 in iupFlatScrollBarSetChildrenPosition() > 1077 iFlatScrollBarCalcHandler(ih->currentheight, 0, ymax, dy, > sb_size, posy, &pos1, &pos2); > 1078 iupBaseSetPosition(sb_vert, ih->currentwidth - sb_size, > pos1); > 1079 } > 1080 > 1081 if (!iupAttribGetBoolean(ih, "XHIDDEN")) > 1082 { > >>> CID 341006: Integer handling issues (DIVIDE_BY_ZERO) > >>> In function call "iFlatScrollBarCalcHandler", division by > expression "xmax" which may be zero has undefined behavior. > 1083 iFlatScrollBarCalcHandler(ih->currentwidth, 0, xmax, dx, > sb_size, posx, &pos1, &pos2); > 1084 iupBaseSetPosition(sb_horiz, pos1, ih->currentheight - > sb_size); > 1085 } > 1086 } > 1087 else > 1088 { > > ** CID 341005: Null pointer dereferences (FORWARD_NULL) > /srcfiledlg/iupwin_newfiledlg.cpp: 726 in winNewFileDlgPopup(Ihandle_ *, > int, int)() > > > > ________________________________________________________________________________________________________ > *** CID 341005: Null pointer dereferences (FORWARD_NULL) > /srcfiledlg/iupwin_newfiledlg.cpp: 726 in winNewFileDlgPopup(Ihandle_ *, > int, int)() > 720 } > 721 } > 722 else > 723 { > 724 IShellItemArray *psiaResult; > 725 > >>> CID 341005: Null pointer dereferences (FORWARD_NULL) > >>> Passing null pointer "opfd" to "GetResults", which dereferences > it. (The dereference happens because this is a virtual function call.) > 726 hr = opfd->GetResults(&psiaResult); > 727 if (SUCCEEDED(hr)) > 728 { > 729 PWSTR pszFilePath = NULL; > 730 DWORD dwNumItems = 0; // number of items in multiple > selection > 731 > > ** CID 341004: (REVERSE_INULL) > /srcfiledlg/iupwin_newfiledlg.cpp: 353 in > winNewFileDlgCreateFilterSpecs(char *, int *)() > /srcfiledlg/iupwin_newfiledlg.cpp: 369 in > winNewFileDlgCreateFilterSpecs(char *, int *)() > > > > ________________________________________________________________________________________________________ > *** CID 341004: (REVERSE_INULL) > /srcfiledlg/iupwin_newfiledlg.cpp: 353 in > winNewFileDlgCreateFilterSpecs(char *, int *)() > 347 filters[i].pszName = iupwinStrToSystem(name); > 348 break; > 349 } > 350 filter++; > 351 } > 352 > >>> CID 341004: (REVERSE_INULL) > >>> Null-checking "filter" suggests that it may be null, but it has > already been dereferenced on all paths leading to the check. > 353 if (!filter) > 354 break; > 355 > 356 name = ++filter; > 357 > 358 while (*filter) > /srcfiledlg/iupwin_newfiledlg.cpp: 369 in > winNewFileDlgCreateFilterSpecs(char *, int *)() > 363 filters[i].pszSpec = iupwinStrToSystem(name); > 364 break; > 365 } > 366 filter++; > 367 } > 368 > >>> CID 341004: (REVERSE_INULL) > >>> Null-checking "filter" suggests that it may be null, but it has > already been dereferenced on all paths leading to the check. > 369 if (!filter) > 370 break; > 371 > 372 i++; > 373 name = ++filter; > 374 > > ** CID 341003: Resource leaks (RESOURCE_LEAK) > /srcfiledlg/iupwin_newfiledlg.cpp: 803 in winNewFileDlgPopup(Ihandle_ *, > int, int)() > > > > ________________________________________________________________________________________________________ > *** CID 341003: Resource leaks (RESOURCE_LEAK) > /srcfiledlg/iupwin_newfiledlg.cpp: 803 in winNewFileDlgPopup(Ihandle_ *, > int, int)() > 797 char nameid[100]; > 798 char *fname = iupStrFileGetTitle(filename); > 799 sprintf(nameid, "MULTIVALUE%d", i + 1); > 800 iupAttribSetStrf(ih, nameid, "%s%s", dir, fname); > 801 > 802 iupAttribSetStrf(ih, "VALUE", "%s%s|", value, > iupAttribGetId(ih, "MULTIVALUE", i + 1)); > >>> CID 341003: Resource leaks (RESOURCE_LEAK) > >>> Variable "fname" going out of scope leaks the storage it points to. > 803 } > 804 else > 805 { > 806 iupAttribSetStrId(ih, "MULTIVALUE", i + 1, > filename); > 807 > 808 if (i == 0) > > ** CID 341002: Resource leaks (RESOURCE_LEAK) > /src/win/iupwin_draw.c: 79 in iupwinDrawThemeInit() > > > > ________________________________________________________________________________________________________ > *** CID 341002: Resource leaks (RESOURCE_LEAK) > /src/win/iupwin_draw.c: 79 in iupwinDrawThemeInit() > 73 { > 74 if (!winAlphaBlend) > 75 { > 76 HINSTANCE lib = LoadLibrary(TEXT("Msimg32")); > 77 if (lib) > 78 winAlphaBlend = (_winAlphaBlendFunc)GetProcAddress(lib, > "AlphaBlend"); > >>> CID 341002: Resource leaks (RESOURCE_LEAK) > >>> Variable "lib" going out of scope leaks the storage it points to. > 79 } > 80 > 81 if (!winThemeOpenData && iupwin_comctl32ver6) > 82 { > 83 HMODULE hinstDll = LoadLibrary(TEXT("uxtheme.dll")); > 84 if (hinstDll) > > > > ________________________________________________________________________________________________________ > To view the defects in Coverity Scan visit, > https://u2389337.ct.sendgrid.net/wf/click?upn=08onrYu34A-2BWcWUl-2F-2BfV0V05UPxvVjWch-2Bd2MGckcRZfAtCqgPBMdgGkhuAKg1yT0Ih2yuJh1J0qt0b6HtTyCiyxkqLFT8-2FBVlV2qqhAorvdLendW6Nv8wPCNeam3biR_eiB7fn2qCcye0Rgfi8ocKxjvSeIjDfclXGEvRcfqXt-2BCX3Cww48-2FEc8Wbb-2FnXVVmkTsdM4Dn6Ar-2FuJLJ0JhPK-2Bu4VnglFRf1EbyjsZrsgwCsNvhfNHkAISfY3HGZslTaNHb0fEX7NpprvY66FMov7X1opwqGkl4-2Bvaeh9B6rIXUUWME4lGavqWQzlO5wY7vzIT93seGbm2dkMahgmfRWQSTwHGvJVCNV8GlodI6kme8-3D > > To manage Coverity Scan email notifications for "ranier_...@hotmail.com", > click > https://u2389337.ct.sendgrid.net/wf/click?upn=08onrYu34A-2BWcWUl-2F-2BfV0V05UPxvVjWch-2Bd2MGckcRbVDbis712qZDP-2FA8y06Nq4Q7HtAiL0B2JjzS9tGzNjj0xCKPpJpNlZfiSpXQdYQgl-2ByL0XrqtoUO-2FUmHQ4rCH9WlVuR5AJaY99S7Dxg8OoV09ZQj6UNeuZPDB50pIrfis-3D_eiB7fn2qCcye0Rgfi8ocKxjvSeIjDfclXGEvRcfqXt-2BCX3Cww48-2FEc8Wbb-2FnXVVm9gGIluPFb5kBa4e-2FVbZBc6QJMqAeeF8wys1ukeGYBjYi1i2VP-2BfpljwCkoL1p3jLNQwBtW8zqHCVLBb0lp88kjHm5i3-2BFmfgz9QI1RXExb-2F3jHu9uTcMlqmZLNDI7wvYrO4lKfzeL9eFeTQ-2BQrFNr3MPp1skWYfe5VLi8OpjbpU-3D > > > > _______________________________________________ > Iup-users mailing list > Iup-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/iup-users >
_______________________________________________ Iup-users mailing list Iup-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/iup-users