diff options
author | Ratchanan Srirattanamet <ratchanan@ubports.com> | 2023-11-29 00:42:50 +0700 |
---|---|---|
committer | Ratchanan Srirattanamet <ratchanan@ubports.com> | 2023-11-29 01:42:23 +0700 |
commit | 41c2b5c21de5a3774f0bbb54de3999eaccc7de70 (patch) | |
tree | 8e846264c36e02681cef23cc0bd7e31656546ae8 | |
parent | b153ce4da15f9ff3dc7f1bd5bd798a402d444f4b (diff) | |
download | ayatana-indicator-sound-personal/peat-psuwit/protected-superclass.tar.gz ayatana-indicator-sound-personal/peat-psuwit/protected-superclass.tar.bz2 ayatana-indicator-sound-personal/peat-psuwit/protected-superclass.zip |
src, tests: fix -Wint-to-pointer-cast and a chance of test crashpersonal/peat-psuwit/protected-superclass
Turns the constructor of `VolumeControl` and `VolumeWarning` from
`internal` to `protected`. This makes Vala emits C declaration of
constructors, which is required by the test's mocks extending these
classes, in the external header.
Without them, the mocks' C code would then consider them "implicitly
declared", and will assume they return `int` instead of a pointer. If
the returned address happened to be higher than `INT_MAX`, the code will
consider the returned address negative and sign-extend it when casting
to a pointer, corrupting it.
As for "unprivating" these constructors, this is an internal static
library anyway. No libraries or headers are installed from this package.
This change is invisible from outside.
-rw-r--r-- | src/volume-control.vala | 2 | ||||
-rw-r--r-- | src/volume-warning.vala | 2 | ||||
-rw-r--r-- | tests/CMakeLists.txt | 4 |
3 files changed, 4 insertions, 4 deletions
diff --git a/src/volume-control.vala b/src/volume-control.vala index f4244b4..a8ba3c7 100644 --- a/src/volume-control.vala +++ b/src/volume-control.vala @@ -54,7 +54,7 @@ public abstract class VolumeControl : Object protected IndicatorSound.Options _options = null; - internal VolumeControl(IndicatorSound.Options options) { + protected VolumeControl(IndicatorSound.Options options) { _options = options; } diff --git a/src/volume-warning.vala b/src/volume-warning.vala index b43e90f..6cfab41 100644 --- a/src/volume-warning.vala +++ b/src/volume-warning.vala @@ -44,7 +44,7 @@ public abstract class VolumeWarning : Object } } - internal VolumeWarning (IndicatorSound.Options options) { + protected VolumeWarning (IndicatorSound.Options options) { _options = options; diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 6776514..39711ed 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -83,8 +83,8 @@ vala_init(vala-mocks set_source_files_properties(media-player-mock.c PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -Wno-unknown-warning-option -Wno-incompatible-pointer-types -Wno-discarded-qualifiers") set_source_files_properties(media-player-list-mock.c PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -Wno-incompatible-pointer-types -Wno-unused-variable") set_source_files_properties(options-mock.c PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -Wno-incompatible-pointer-types -Wno-unused-variable") -set_source_files_properties(volume-control-mock.c PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -Wno-incompatible-pointer-types -Wno-int-to-pointer-cast -Wno-implicit-function-declaration") -set_source_files_properties(volume-warning-mock.c PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -Wno-incompatible-pointer-types -Wno-unused-variable -Wno-int-to-pointer-cast -Wno-implicit-function-declaration") +set_source_files_properties(volume-control-mock.c PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -Wno-incompatible-pointer-types") +set_source_files_properties(volume-warning-mock.c PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -Wno-incompatible-pointer-types -Wno-unused-variable") vala_add(vala-mocks media-player-mock.vala |