Actions
Bug #15495
closedsun_fc: void operator delete(void*) called
Start date:
Due date:
% Done:
100%
Estimated time:
Difficulty:
Medium
Tags:
Gerrit CR:
External Bug:
Description
Build errors with gcc 12:
../common/HBANPIVPort.cc: In member function 'std::string HBANPIVPort::lookupControllerPath(std::string)': ../common/HBANPIVPort.cc:85:32: error: 'void operator delete(void*)' called on pointer returned from a mismatched allocation function [-Werror=mismatched-new-delete] 85 | delete (dir_buf); | ^ ../common/HBANPIVPort.cc:79:75: note: returned from 'void* operator new [](size_t)' 79 | uchar_t *dir_buf = new uchar_t[sizeof (struct dirent) + MAXPATHLEN]; | ^ ../common/HBANPIVPort.cc:104:48: error: 'void operator delete(void*)' called on pointer returned from a mismatched allocation function [-Werror=mismatched-new-delete] 104 | delete (dir_buf); | ^ ../common/HBANPIVPort.cc:79:75: note: returned from 'void* operator new [](size_t)' 79 | uchar_t *dir_buf = new uchar_t[sizeof (struct dirent) + MAXPATHLEN]; | ^ ../common/HBANPIVPort.cc:111:24: error: 'void operator delete(void*)' called on pointer returned from a mismatched allocation function [-Werror=mismatched-new-delete] 111 | delete (dir_buf); | ^ ../common/HBANPIVPort.cc:79:75: note: returned from 'void* operator new [](size_t)' 79 | uchar_t *dir_buf = new uchar_t[sizeof (struct dirent) + MAXPATHLEN]; | ^ cc1plus: all warnings being treated as errors ../common/Sun_fcGetFcpTargetMapping.cc: In function 'HBA_STATUS Sun_fcGetFcpTargetMapping(HBA_HANDLE, PHBA_FCPTARGETMAPPING)': ../common/Sun_fcGetFcpTargetMapping.cc:127:25: error: 'void operator delete(void*)' called on pointer returned from a mismatched allocation function [-Werror=mismatched-new-delete] 127 | delete(mappingV2); | ^ ../common/Sun_fcGetFcpTargetMapping.cc:97:44: note: returned from 'void* operator new [](std::size_t)' 97 | sizeof (HBA_FCPTARGETMAPPINGV2)]; | ^ cc1plus: all warnings being treated as errors ../common/TgtFCHBA.cc: In static member function 'static void TgtFCHBA::loadAdapters(std::vector<HBA*>&)': ../common/TgtFCHBA.cc:289:31: error: 'void operator delete(void*)' called on pointer returned from a mismatched allocation function [-Werror=mismatched-new-delete] 289 | delete (tgthbaList); | ^ ../common/TgtFCHBA.cc:277:62: note: returned from 'void* operator new [](std::size_t)' 277 | tgthbaList = (fc_tgt_hba_list_t *)new uchar_t[bufSize]; | ^ ../common/TgtFCHBA.cc:308:31: error: 'void operator delete(void*)' called on pointer returned from a mismatched allocation function [-Werror=mismatched-new-delete] 308 | delete (tgthbaList); | ^ ../common/TgtFCHBA.cc:277:62: note: returned from 'void* operator new [](std::size_t)' 277 | tgthbaList = (fc_tgt_hba_list_t *)new uchar_t[bufSize]; | ^ ../common/TgtFCHBA.cc:331:26: error: 'void operator delete(void*)' called on pointer returned from a mismatched allocation function [-Werror=mismatched-new-delete] 331 | delete(tgthbaList); | ^ ../common/TgtFCHBA.cc:277:62: note: returned from 'void* operator new [](std::size_t)' 277 | tgthbaList = (fc_tgt_hba_list_t *)new uchar_t[bufSize]; | ^ ../common/TgtFCHBA.cc:335:23: error: 'void operator delete(void*)' called on pointer returned from a mismatched allocation function [-Werror=mismatched-new-delete] 335 | delete (tgthbaList); | ^ ../common/TgtFCHBA.cc:277:62: note: returned from 'void* operator new [](std::size_t)' 277 | tgthbaList = (fc_tgt_hba_list_t *)new uchar_t[bufSize]; | ^ cc1plus: all warnings being treated as errors ../common/FCHBAPort.cc: In constructor 'FCHBAPort::FCHBAPort(std::string)': ../common/FCHBAPort.cc:493:41: error: 'void operator delete(void*)' called on pointer returned from a mismatched allocation function [-Werror=mismatched-new-delete] 493 | delete (pathList); | ^ ../common/FCHBAPort.cc:484:75: note: returned from 'void* operator new [](std::size_t)' 484 | pathList = (fc_hba_npiv_port_list_t *) new uchar_t[bufSize]; | ^ ../common/FCHBAPort.cc:505:25: error: 'void operator delete(void*)' called on pointer returned from a mismatched allocation function [-Werror=mismatched-new-delete] 505 | delete (pathList); | ^ ../common/FCHBAPort.cc:484:75: note: returned from 'void* operator new [](std::size_t)' 484 | pathList = (fc_hba_npiv_port_list_t *) new uchar_t[bufSize]; | ^ ../common/FCHBAPort.cc: In member function 'virtual void FCHBAPort::getTargetMappings(PHBA_FCPTARGETMAPPINGV2)': ../common/FCHBAPort.cc:750:29: error: 'void operator delete(void*)' called on pointer returned from a mismatched allocation function [-Werror=mismatched-new-delete] 750 | delete (mappings); | ^ ../common/FCHBAPort.cc:732:50: note: returned from 'void* operator new [](std::size_t)' 732 | sizeof (fc_hba_target_mappings_t)]; | ^ ../common/FCHBAPort.cc:838:33: error: 'void operator delete(void*)' called on pointer returned from a mismatched allocation function [-Werror=mismatched-new-delete] 838 | delete (mappings); | ^ ../common/FCHBAPort.cc:732:50: note: returned from 'void* operator new [](std::size_t)' 732 | sizeof (fc_hba_target_mappings_t)]; | ^ ../common/FCHBAPort.cc:844:29: error: 'void operator delete(void*)' called on pointer returned from a mismatched allocation function [-Werror=mismatched-new-delete] 844 | delete (mappings); | ^ ../common/FCHBAPort.cc:732:50: note: returned from 'void* operator new [](std::size_t)' 732 | sizeof (fc_hba_target_mappings_t)]; | ^ ../common/FCHBAPort.cc:849:29: error: 'void operator delete(void*)' called on pointer returned from a mismatched allocation function [-Werror=mismatched-new-delete] 849 | delete (mappings); | ^ ../common/FCHBAPort.cc:732:50: note: returned from 'void* operator new [](std::size_t)' 732 | sizeof (fc_hba_target_mappings_t)]; | ^ ../common/FCHBAPort.cc:852:25: error: 'void operator delete(void*)' called on pointer returned from a mismatched allocation function [-Werror=mismatched-new-delete] 852 | delete (mappings); | ^ ../common/FCHBAPort.cc:732:50: note: returned from 'void* operator new [](std::size_t)' 732 | sizeof (fc_hba_target_mappings_t)]; | ^ cc1plus: all warnings being treated as errors ../common/FCHBA.cc: In static member function 'static void FCHBA::loadAdapters(std::vector<HBA*>&)': ../common/FCHBA.cc:389:29: error: 'void operator delete(void*)' called on pointer returned from a mismatched allocation function [-Werror=mismatched-new-delete] 389 | delete (pathList); | ^ ../common/FCHBA.cc:377:56: note: returned from 'void* operator new [](std::size_t)' 377 | pathList = (fc_hba_list_t *)new uchar_t[bufSize]; | ^ ../common/FCHBA.cc:408:29: error: 'void operator delete(void*)' called on pointer returned from a mismatched allocation function [-Werror=mismatched-new-delete] 408 | delete (pathList); | ^ ../common/FCHBA.cc:377:56: note: returned from 'void* operator new [](std::size_t)' 377 | pathList = (fc_hba_list_t *)new uchar_t[bufSize]; | ^ ../common/FCHBA.cc:448:24: error: 'void operator delete(void*)' called on pointer returned from a mismatched allocation function [-Werror=mismatched-new-delete] 448 | delete(pathList); | ^ ../common/FCHBA.cc:377:56: note: returned from 'void* operator new [](std::size_t)' 377 | pathList = (fc_hba_list_t *)new uchar_t[bufSize]; | ^ ../common/FCHBA.cc:452:21: error: 'void operator delete(void*)' called on pointer returned from a mismatched allocation function [-Werror=mismatched-new-delete] 452 | delete (pathList); | ^ ../common/FCHBA.cc:377:56: note: returned from 'void* operator new [](std::size_t)' 377 | pathList = (fc_hba_list_t *)new uchar_t[bufSize]; | ^ cc1plus: all warnings being treated as errors ../common/HBAPort.cc: In member function 'std::string HBAPort::lookupControllerPath(std::string)': ../common/HBAPort.cc:241:36: error: 'void operator delete(void*)' called on pointer returned from a mismatched allocation function [-Werror=mismatched-new-delete] 241 | delete (dir_buf); | ^ ../common/HBAPort.cc:216:75: note: returned from 'void* operator new [](size_t)' 216 | uchar_t *dir_buf = new uchar_t[sizeof (struct dirent) + MAXPATHLEN]; | ^ ../common/HBAPort.cc:248:24: error: 'void operator delete(void*)' called on pointer returned from a mismatched allocation function [-Werror=mismatched-new-delete] 248 | delete (dir_buf); | ^ ../common/HBAPort.cc:216:75: note: returned from 'void* operator new [](size_t)' 216 | uchar_t *dir_buf = new uchar_t[sizeof (struct dirent) + MAXPATHLEN]; | ^ cc1plus: all warnings being treated as errors
We need to use operator delete[]() here. gcc 7 and gcc 10 does not complain but 12 does put end to this. And gcc 7/gcc 10 are happy with delete[]().
Testing done: build, wsdiff is only reporting constant differences.
Updated by Toomas Soome 12 days ago
- Subject changed from sun_fc: void operator delete(void*)' called to sun_fc: void operator delete(void*) called
Updated by Electric Monk 6 days ago
- Status changed from In Progress to Closed
- % Done changed from 90 to 100
git commit b3385a702fe5f8caba5ad4c451836514efff0bfa
commit b3385a702fe5f8caba5ad4c451836514efff0bfa Author: Toomas Soome <tsoome@me.com> Date: 2023-03-23T21:26:10.000Z 15495 sun_fc: void operator delete(void*) called Reviewed by: Dan Cross <cross@oxidecomputer.com> Approved by: Dan McDonald <danmcd@mnx.io>
Actions