arduino / arduino/ArduinoCore-API

Missing virtual destructor for `Print` class

Offen
#256 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Beansprucht von @andreagilardoni Auf GitHub ansehen
bug
Vorherrschende Sprache
C++
Sterne
306
Forks
150
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

### Description

Missing virtual destructor - memory leak and UB

### Environment

First found on R4, but it is general

### Current behavior

Warning while compiling sketch, possible UB.

```
packages/arduino/hardware/renesas_uno/1.5.0/libraries/WiFiS3/src/Modem.cpp: In destructor 'ModemClass::~ModemClass()':
packages/arduino/hardware/renesas_uno/1.5.0/libraries/WiFiS3/src/Modem.cpp:27:14: warning: deleting object of polymorphic
class type 'UART' which has non-virtual destructor might cause undefined behavior [-Wdelete-non-virtual-dtor]
delete _serial;
```
ModemClass extends Serial which extends Print.

### Expected behavior

no warnings

### Additional information

This class is very base class of all streams and other i/o components.

https://github.com/arduino/ArduinoCore-API/blob/4a02bfc0a924e1fec34c3bb82ffd5dfba7643a0c/api/Print.h#L35

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Lies die referenzierte Deklaration in api/Print.h und prüfe den verknüpften Pull Request #218, um die vorgeschlagene Änderung zu verstehen. Erledigt ist die Aufgabe, wenn das Beispiel Modem.cpp nicht mehr die Warnung zu einem nicht-virtuellen Destruktor oder die damit verbundene Bedenken bezüglich undefinierten Verhaltens erzeugt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
cpp
Bereich
api, embedded-iot
Issue-Typ
Bug
Schwierigkeit
1/5
Geschätzter Aufwand
Unter einer Stunde
Aktivitätsstatus
Veraltet
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
30/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.