ConcreteShadowNode::getConcreteSharedProps() returns a reference to a temporary
Les mainteneurs répondent en général sous 2 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 82/100
Piste de recherche
Lisez packages/react-native/ReactCommon/react/renderer/core/ConcreteShadowNode.h, en particulier les lignes 144–148, et examinez le type de retour ainsi que l’implémentation de getConcreteSharedProps(). Compilez le reproducteur fourni avec -Wreturn-stack-address pour confirmer l’avertissement, puis mettez à jour la méthode afin que sa valeur de retour reste valide tout en préservant le nom et la constance demandés. Le travail est terminé lorsque le reproducteur compile sans l’avertissement.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Description
ConcreteShadowNode::getConcreteSharedProps() (ConcreteShadowNode.h) is declared to return const std::shared_ptr<const ConcreteProps> & and returns std::static_pointer_cast<const ConcreteProps>(props_), a temporary destroyed as the function returns, so every caller gets a reference to a destroyed shared_ptr. Nitro's generated view components called it until margelo/nitro#1502 moved them to getProps().
Steps to reproduce
- Clone the reproducer below and run
bash repro.shon Ubuntu 24.04 withclang git libboost-dev libgoogle-glog-dev libdouble-conversion-devfrom apt, or thedocker runline in its README. It clones react-native'smain, and folly, fast_float and fmt at the versionspackages/react-native/gradle/libs.versions.tomlpins. - It compiles
repro.cpp, which declares a component's shadow node,ConcreteShadowNode<ProbeComponentName, ShadowNode, Props>, and a function that returnsshadowNode.getConcreteSharedProps().
Expected: repro.cpp compiles without a warning: getConcreteSharedProps() returns the shared_ptr by value, or a reference to one that outlives the call, and keeps its name and its const.
Actual: clang reports returning reference to local temporary object at the function's return, ConcreteShadowNode.h:147.
React Native Version
0.88.1
Affected Platforms
Other (please specify)
Output of npx @react-native-community/cli info
Not an app. The reproducer compiles ReactCommon from react-native's main at b9a83f3 (0.88.0 and 0.88.1 have the
same getConcreteSharedProps), on Ubuntu 24.04 with clang 18.1.3, folly 2024.11.18.00, fast_float 8.0.0 and
fmt 12.1.0. ReactCommon is shared by Android and iOS.
Stacktrace or Logs
react/react-native b9a83f3, Ubuntu clang version 18.1.3 (1ubuntu1), Linux x86_64
folly 2024.11.18.00, fast_float 8.0.0 and fmt 12.1.0, as libs.versions.toml pins them
compiling repro.cpp, whose sharedPropsOf() returns shadowNode.getConcreteSharedProps(), with -Wreturn-stack-address
ReactCommon/react/renderer/core/ConcreteShadowNode.h:147:12: warning: returning reference to local temporary object [-Wreturn-stack-address]
147 | return std::static_pointer_cast<const ConcreteProps>(props_);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
summary: react/react-native b9a83f3: clang reports that ConcreteShadowNode::getConcreteSharedProps() returns a reference to a temporary
MANDATORY Reproducer
https://github.com/YevheniiKotyrlo/concrete-shadow-node-dangling-shared-props
- Langage dominant
- C++
- Étoiles
- 127k
- Forks
- 25.5k
- Merge moyen
- 3 j 18 h
- PR mergées (30 j)
- 188
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de react/react-native
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
react/react-native#59945 ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
react/react-native#59942 ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
react/react-native#59939 ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
react/react-native#59929 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
-
iOS Fabric pointer-handler reset leaves the next lone touch non-primaryPeut-être pris @alleneubank l’a pris il y a 1 jour. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
react/react-native#59919 ·
Les mainteneurs répondent en général sous 2 jours
Toutes les issues de react/react-native
Issues similaires
-
type:bug
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
tensorflow/tflite-micro#3995 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
not for AI lovers
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
OSGeo/gdal#15515 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
VT: Backend
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
contour-terminal/contour#2314 ·
Les mainteneurs répondent en général sous 1 jour