Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package upower for openSUSE:Factory checked 
in at 2026-07-06 12:28:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/upower (Old)
 and      /work/SRC/openSUSE:Factory/.upower.new.1982 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "upower"

Mon Jul  6 12:28:14 2026 rev:99 rq:1363689 version:1.91.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/upower/upower.changes    2026-06-25 
10:51:44.830036467 +0200
+++ /work/SRC/openSUSE:Factory/.upower.new.1982/upower.changes  2026-07-06 
12:28:52.632196457 +0200
@@ -1,0 +2,14 @@
+Fri Jul  3 11:12:09 UTC 2026 - Bjørn Lie <[email protected]>
+
+- Update to version 1.91.3:
+  + Feature: up-device-battery: Prefer "Standard" over "Fast"
+    charging
+  + Fix: Resolve potential leaks
+  + Fix: Potential out-of-bound access
+  + Fix: Improve access control
+  + Fix: Remove unused codes
+  + Fix: Fix for Asus Battery Charge Threshold Detection
+- Drop 25303ba52771ee514b70fb1a5318a8313889ac31.patch: Added
+  upstream.
+
+-------------------------------------------------------------------

Old:
----
  25303ba52771ee514b70fb1a5318a8313889ac31.patch
  upower-1.91.2.obscpio

New:
----
  upower-1.91.3.obscpio

----------(Old B)----------
  Old:  + Fix: Fix for Asus Battery Charge Threshold Detection
- Drop 25303ba52771ee514b70fb1a5318a8313889ac31.patch: Added
  upstream.
----------(Old E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ upower.spec ++++++
--- /var/tmp/diff_new_pack.4wJdfG/_old  2026-07-06 12:28:53.376222270 +0200
+++ /var/tmp/diff_new_pack.4wJdfG/_new  2026-07-06 12:28:53.380222408 +0200
@@ -28,7 +28,7 @@
 %define idevice disabled
 %endif
 Name:           upower
-Version:        1.91.2
+Version:        1.91.3
 Release:        0
 Summary:        Power Device Enumeration Framework
 License:        GPL-2.0-or-later
@@ -39,11 +39,10 @@
 Source1:        upower.rpmlintrc
 # PATCH-FIX-OPENSUSE: Skip installation of test-only dependencies
 Patch1:         skip-tests-install.patch
-# PATCH-FIX-UPSTREAM 25303ba52771ee514b70fb1a5318a8313889ac31.patch -- 
up-device-battery: Prefer "Standard" over "Fast" charging
-Patch2:         
https://gitlab.freedesktop.org/upower/upower/-/commit/25303ba52771ee514b70fb1a5318a8313889ac31.patch
 # PATCH-FIX-OPENSUSE: No need on SUSE to grant root user addtional polkit 
rights, bsc#1265867
 # This is a revert of mainline commit d75f2dbee4df2bc20df840
 Patch3:         
policy-org.freedesktop.upower.rules-grant-permission-for-skipping-the-inhibitor.patch
+
 BuildRequires:  gobject-introspection-devel >= 0.9.9
 BuildRequires:  gtk-doc >= 1.11
 BuildRequires:  intltool

++++++ _service ++++++
--- /var/tmp/diff_new_pack.4wJdfG/_old  2026-07-06 12:28:53.408223380 +0200
+++ /var/tmp/diff_new_pack.4wJdfG/_new  2026-07-06 12:28:53.412223518 +0200
@@ -3,7 +3,7 @@
   <service name="obs_scm" mode="manual">
     <param name="scm">git</param>
     <param name="url">https://gitlab.freedesktop.org/upower/upower.git</param>
-    <param name="revision">v1.91.2</param>
+    <param name="revision">v1.91.3</param>
     <param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
     <param 
name="versionrewrite-pattern">(v)?([^+]+)(\+0)?(\+[1-9][0-9]*)?</param>
     <param name="versionrewrite-replacement">\2\4</param>

++++++ upower-1.91.2.obscpio -> upower-1.91.3.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upower-1.91.2/.ci/meson-build.sh 
new/upower-1.91.3/.ci/meson-build.sh
--- old/upower-1.91.2/.ci/meson-build.sh        1970-01-01 01:00:00.000000000 
+0100
+++ new/upower-1.91.3/.ci/meson-build.sh        2026-07-02 09:39:04.000000000 
+0200
@@ -0,0 +1,145 @@
+#!/usr/bin/env bash
+#
+# This script is sourced from here:
+# https://gitlab.freedesktop.org/whot/meson-helper
+#
+# SPDX-License-Identifier: MIT
+#
+# Usage:
+#     meson-build.sh
+#       [-C directory]                 ... change to directory before doing 
anything
+#      [--skip-build]                  ... skip the compilation
+#      [--skip-test|--run-test]        ... skip or explicitly run meson test
+#      [--skip-dist|--run-dist]        ... skip or explicitly run meson dist
+#      [--skip-install|--run-install]  ... skip or explicitly run meson install
+#
+#
+# Environment variables:
+#    If the .meson_environment file exists in $PWD, it is sourced at the start 
of the script.
+#    This file is sourced before the -C directory option takes effect.
+#
+#    MESON_BUILDDIR
+#    MESON_ARGS, MESON_EXTRA_ARGS:
+#      Args passed to meson setup. The MESON_EXTRA_ARGS exist to make it 
easier for
+#      callers to have a default set of arguments and a variable set of 
arguments.
+#    MESON_TEST_ARGS, MESON_DIST_ARGS, MESON_INSTALL_ARGS:
+#      Args passed directly to the respective meson command. If these args are 
set it implies
+#      --run-$cmd. Use --skip-$cmd to skip.
+#    NINJA_ARGS - args passed to ninja via meson compile
+
+set -x
+if [[ -f .meson_environment ]]; then
+       . .meson_environment
+fi
+
+# If test args are set, we assume we want to run the tests
+MESON_RUN_TEST="$MESON_TEST_ARGS"
+MESON_RUN_INSTALL="$MESON_INSTALL_ARGS"
+MESON_RUN_DIST="$MESON_DIST_ARGS"
+
+while [[ $# -gt 0 ]]; do
+       case $1 in
+               -C)
+                       directory=$2
+                       shift 2
+                       pushd "$directory" || exit 1
+                       ;;
+               --skip-setup)
+                       shift
+                       MESON_SKIP_SETUP="1"
+                       ;;
+               --skip-build)
+                       shift
+                       MESON_SKIP_BUILD="1"
+                       ;;
+               --skip-test)
+                       shift
+                       MESON_RUN_TEST=""
+                       ;;
+               --run-test)
+                       shift
+                       MESON_RUN_TEST="1"
+                       ;;
+               --skip-dist)
+                       shift
+                       MESON_RUN_DIST=""
+                       ;;
+               --run-dist)
+                       shift
+                       MESON_RUN_DIST="1"
+                       ;;
+               --skip-install)
+                       shift
+                       MESON_RUN_INSTALL=""
+                       ;;
+               --run-install)
+                       shift
+                       MESON_RUN_INSTALL="1"
+                       ;;
+               *)
+                       echo "Unknow commandline argument $1"
+                       exit 1
+                       ;;
+       esac
+done
+
+if [[ -z "$MESON_BUILDDIR" ]]; then
+       echo "\$MESON_BUILDDIR undefined."
+       exit 1
+fi
+
+# emulate a few gitlab variables to make it easier to
+# run and debug locally.
+if [[ -z "$CI_JOB_ID" ]] || [[ -z "$CI_JOB_NAME" ]]; then
+       echo "Missing \$CI_JOB_ID or \$CI_JOB_NAME".
+       CI_PROJECT_NAME=$(basename "$PWD")
+       CI_JOB_ID=$(date +%s)
+       CI_JOB_NAME="$CI_PROJECT_NAME-job-local"
+       echo "Simulating gitlab environment: "
+       echo " CI_JOB_ID=$CI_JOB_ID"
+       echo " CI_JOB_NAME=$CI_JOB_NAME"
+fi
+
+if [[ -n "$FDO_CI_CONCURRENT" ]]; then
+       jobcount="-j$FDO_CI_CONCURRENT"
+       export MESON_TESTTHREADS="$FDO_CI_CONCURRENT"
+fi
+
+if [[ -n "$MESON_EXTRA_ARGS" ]]; then
+       MESON_ARGS="$MESON_ARGS $MESON_EXTRA_ARGS"
+fi
+
+echo "*************************************************"
+echo "builddir: $MESON_BUILDDIR"
+echo "meson args: $MESON_ARGS"
+echo "ninja args: $NINJA_ARGS"
+echo "meson test args: $MESON_TEST_ARGS"
+echo "job count: ${jobcount-0}"
+echo "*************************************************"
+
+set -e
+
+if [[ -z "$MESON_SKIP_SETUP" ]]; then
+       rm -rf "$MESON_BUILDDIR"
+       meson setup "$MESON_BUILDDIR" $MESON_ARGS
+fi
+meson configure --no-pager "$MESON_BUILDDIR"
+
+if [[ -z "$MESON_SKIP_BUILD" ]]; then
+       if [[ -n "$NINJA_ARGS" ]]; then
+               ninja_args="--ninja-args $NINJA_ARGS"
+       fi
+       meson compile -v -C "$MESON_BUILDDIR" $jobcount $ninja_args
+fi
+
+if [[ -n "$MESON_RUN_TEST" ]]; then
+       meson test -C "$MESON_BUILDDIR" --print-errorlogs $MESON_TEST_ARGS
+fi
+
+if [[ -n "$MESON_RUN_INSTALL" ]]; then
+       meson install --no-rebuild  -C "$MESON_BUILDDIR" $MESON_INSTALL_ARGS
+fi
+
+if [[ -n "$MESON_RUN_DIST" ]]; then
+       meson dist -C "$MESON_BUILDDIR" $MESON_DIST_ARGS
+fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upower-1.91.2/.gitlab-ci.yml 
new/upower-1.91.3/.gitlab-ci.yml
--- old/upower-1.91.2/.gitlab-ci.yml    2026-04-01 10:20:02.000000000 +0200
+++ new/upower-1.91.3/.gitlab-ci.yml    2026-07-02 09:39:04.000000000 +0200
@@ -1,17 +1,19 @@
 include:
   - project: 'freedesktop/ci-templates'
-    ref: master
-    file: '/templates/fedora.yml'
-  - project: 'freedesktop/ci-templates'
-    ref: master
-    file: '/templates/debian.yml'
+    ref: 799270f0e582ec6bbf460680c9a4f8f0d2ce7517
+    file:
+      - '/templates/fedora.yml'
+      - '/templates/debian.yml'
+      - '/templates/ci-fairy.yml'
 
 variables:
-  FDO_DISTRIBUTION_TAG: latest
-  FDO_DISTRIBUTION_VERSION: rawhide
+  FEDORA_VERSION: 44
+  DEBIAN_VERSION: trixie
+  # Opaque tag without meaning. Change whenever we want our images to be 
rebuilt
+  FDO_DISTRIBUTION_TAG: "2026-05-28.7"
   FDO_UPSTREAM_REPO: "upower/$CI_PROJECT_NAME"
-  FEDORA_IMAGE: 
"$CI_REGISTRY/upower/$CI_PROJECT_NAME/fedora/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG"
-  DEPENDENCIES:
+  FDO_DISTRIBUTION_EXEC: curl 
https://gitlab.freedesktop.org/hadess/check-abi/-/raw/main/contrib/check-abi-fedora.sh
 | bash
+  FEDORA_DEPENDENCIES:
     gtk-doc
     meson
     gettext-devel
@@ -35,118 +37,205 @@
     python3-packaging
     git
     clang
-  LAST_ABI_BREAK: "9058d45685d1c7c08d52fb64c393fed9eeed542b"
+    glibc-langpack-fr
+    umockdev-devel
+  # Needed for libgudev from git and for pre-commit
+  FEDORA_EXTRA_DEPENDENCIES:
+    git
+    glibc-langpack-fr
+    umockdev-devel
+    libatomic
+    pre-commit
+  DEBIAN_DEPENDENCIES:
+    autoconf
+    automake
+    autopoint
+    autotools-dev
+    binutils
+    binutils-common
+    binutils-x86-64-linux-gnu
+    bsdextrautils
+    build-essential
+    bzip2
+    ca-certificates
+    cpp
+    cpp-14
+    cpp-14-x86-64-linux-gnu
+    cpp-x86-64-linux-gnu
+    curl
+    debhelper
+    git
+    g++
+    g++-14
+    g++-14-x86-64-linux-gnu
+    g++-x86-64-linux-gnu
+    gcc
+    gcc-14
+    gcc-14-x86-64-linux-gnu
+    gcc-x86-64-linux-gnu
+    libgirepository-1.0-dev
+    libimobiledevice-dev
+    m4
+    make
+    meson
+    systemd-dev
+    gobject-introspection
+    python3-dbus
+    python3-packaging
+    python3-dbusmock
+    gir1.2-upowerglib-1.0
+    libpolkit-gobject-1-dev
+    xsltproc
+    gtk-doc-tools
+  # Needed for libgudev from git
+  DEBIAN_EXTRA_DEPENDENCIES:
+    git
+    umockdev
+    libgudev-1.0-dev
+    libumockdev-dev
+    libumockdev0
+    libsystemd-dev
+    systemd
+  MESON_BUILDDIR: 'build'
+  LAST_ABI_BREAK: '9058d45685d1c7c08d52fb64c393fed9eeed542b'
 
 workflow:
   rules:
     - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
+    - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
+      when: never
     - if: $CI_PIPELINE_SOURCE == 'push'
     - if: $CI_PIPELINE_SOURCE == 'schedule'
 
 stages:
+  - container-prep
   - pre-commit
   - check-source
   - build
   - test
   - deploy
 
-image: $FEDORA_IMAGE
+.fedora-defaults:
+  extends:
+    - .fdo.distribution-image@fedora
+  variables:
+    FDO_DISTRIBUTION_VERSION: $FEDORA_VERSION
+
+.debian-defaults:
+  extends:
+    - .fdo.distribution-image@debian
+  variables:
+    FDO_DISTRIBUTION_VERSION: $DEBIAN_VERSION
+
+container_fedora_build:
+  extends:
+    - .fedora-defaults
+    - .fdo.container-build@fedora
+  stage: container-prep
+  variables:
+    GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the 
image
+    FDO_DISTRIBUTION_PACKAGES: $FEDORA_DEPENDENCIES $FEDORA_EXTRA_DEPENDENCIES
+
+container_debian_build:
+  extends:
+    - .debian-defaults
+    - .fdo.container-build@debian
+  stage: container-prep
+  variables:
+    GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the 
image
+    FDO_DISTRIBUTION_PACKAGES: $DEBIAN_DEPENDENCIES $DEBIAN_EXTRA_DEPENDENCIES
+
+verify_signoff:
+  extends:
+    - .fdo.ci-fairy
+  stage: pre-commit
+  script:
+    - ci-fairy -vv check-commits --signed-off-by --junit-xml=results.xml
+  rules:
+    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
+  variables:
+    GIT_DEPTH: 100
+  artifacts:
+    reports:
+      junit: results.xml
 
 pre_commit:
+  extends:
+    - .fedora-defaults
   stage: pre-commit
   script:
-    - dnf install -y libatomic
-    - dnf install -y pre-commit
     - pre-commit run --all-files
+  needs:
+    - container_fedora_build
 
 test_nut_hwdb:
+  extends:
+    - .fedora-defaults
   stage: check-source
-  except:
-    variables:
-      - $CI_PIPELINE_SOURCE == "schedule"
   allow_failure: true
   script:
     - curl 
https://raw.githubusercontent.com/networkupstools/nut/master/scripts/upower/95-upower-hid.hwdb
 >rules/95-upower-hid.hwdb
-    - git diff
-    - "! git status -s | grep -q ."
+    - git diff --exit-code
+  rules:
+    - if: $CI_PIPELINE_SOURCE == "schedule"
+  needs:
+    - container_fedora_build
+
+# We should really cache this between jobs but a quick clone shouldn't hurt us
+.install_libgudev_from_git: &install_libgudev_from_git
+  - git -c http.sslVerify=false clone --depth=1 
https://gitlab.gnome.org/GNOME/libgudev.git libgudev-"$CI_JOB_ID"
+  - cd libgudev-"$CI_JOB_ID"
+  - meson "$MESON_BUILDDIR" -Dprefix=/usr
+  - ninja -C "$MESON_BUILDDIR" install
+  - cd ..
 
-build:
+.build:
   stage: build
   before_script:
-    - git clone https://gitlab.gnome.org/GNOME/libgudev.git
-    - cd libgudev
-    - dnf install -y glibc-langpack-fr umockdev-devel
-    - meson _build -Dprefix=/usr
-    - ninja -C _build install
-    - cd ..
+    - *install_libgudev_from_git
   script:
-    - meson _build -Dintrospection=enabled -Dman=true -Dgtk-doc=true 
-Didevice=enabled
-    - ninja -C _build
-  except:
-    variables:
-      - $CI_PIPELINE_SOURCE == "schedule"
+    - .ci/meson-build.sh --skip-test
   # avoid recompiling in test stage
   artifacts:
     name: untracked
     paths:
      - "${CI_PROJECT_DIR}"
     expire_in: 3h30min
+  variables:
+    MESON_ARGS: '-Dintrospection=enabled -Dman=true -Dgtk-doc=true 
-Didevice=enabled'
+  needs:
+    - container_fedora_build
+
+build_fedora:
+  extends:
+    - .fedora-defaults
+    - .build
+  needs:
+    - container_fedora_build
 
 build_debian:
-  stage: build
-  image: registry.freedesktop.org/upower/upower/debian/trixie:latest
-  before_script:
-    - apt update
-    - apt install -y git
-    - git -c http.sslVerify=false clone 
https://gitlab.gnome.org/GNOME/libgudev.git
-    - cd libgudev
-    - apt install -y umockdev libumockdev-dev libumockdev0 libsystemd-dev 
systemd
-    - meson _debian_build -Dprefix=/usr
-    - ninja -C _debian_build install
-    - cd ..
-  script:
-    - meson _debian_build -Dintrospection=enabled -Dman=true -Dgtk-doc=true 
-Didevice=enabled
-    - ninja -C _debian_build
-  except:
-    variables:
-      - $CI_PIPELINE_SOURCE == "schedule"
-  # avoid recompiling in test stage
-  artifacts:
-    name: untracked
-    paths:
-     - "${CI_PROJECT_DIR}"
-    expire_in: 3h30min
-
+  extends:
+    - .debian-defaults
+    - .build
+  needs:
+    - container_debian_build
 
 # Compile test the other backends (they don't have extra dependencies 
currently)
-.build_backend_template: &build_backend
+build_backend:
+  parallel:
+    matrix:
+      - BACKEND: [dummy, freebsd, openbsd]
+  extends:
+    - .fedora-defaults
   stage: build
   script:
-    - CFLAGS=-DUPOWER_CI_DISABLE_PLATFORM_CODE=1 meson _build 
-Dos_backend=$backend
-    - ninja -C _build
-  except:
-    variables:
-      - $CI_PIPELINE_SOURCE == "schedule"
-
-build_dummy:
-  variables:
-    backend: dummy
-  <<: *build_backend
-
-build_freebsd:
-  variables:
-    backend: freebsd
-  <<: *build_backend
-
-build_openbsd:
+    - .ci/meson-build.sh --skip-test
   variables:
-    backend: openbsd
-  <<: *build_backend
+    CFLAGS: '-DUPOWER_CI_DISABLE_PLATFORM_CODE=1'
+    MESON_ARGS: '-Dos_backend=$BACKEND'
 
-test:
+.test:
   stage: test
-  dependencies:
-   - build
   before_script:
     - git clone https://github.com/zatrazz/glibc-tools.git
     - cd glibc-tools
@@ -154,150 +243,58 @@
     - make install
     - cd ..
   script:
-    - meson _build -Dintrospection=enabled -Dman=true -Dgtk-doc=true 
-Didevice=enabled
-    - ninja -C _build
-    - catchsegv meson test -C _build --print-errorlogs --no-stdsplit
-    - .ci/fail_skipped_tests.py _build/meson-logs/testlog.junit.xml
-
+    - catchsegv meson test -C "$MESON_BUILDDIR" --print-errorlogs --no-stdsplit
+    - .ci/fail_skipped_tests.py "$MESON_BUILDDIR"/meson-logs/testlog.junit.xml
   artifacts:
     when: always
     expire_in: 1 week
     paths:
-      - "${CI_PROJECT_DIR}/_build/meson-logs/"
-  except:
-    variables:
-      - $CI_PIPELINE_SOURCE == "schedule"
+      - "${CI_PROJECT_DIR}/$MESON_BUILDDIR/meson-logs/"
 
-test_debian:
-  stage: test
-  image: registry.freedesktop.org/upower/upower/debian/trixie:latest
-  dependencies:
-   - build_debian
-  before_script:
-    - git -c http.sslVerify=false clone 
https://github.com/zatrazz/glibc-tools.git
-    - cd glibc-tools
-    - ./configure
-    - make install
-    - cd ..
-    - cd libgudev
-    - apt update
-    - apt install -y umockdev libumockdev-dev libumockdev0 libsystemd-dev 
systemd
-    - ninja -C _debian_build install
-    - cd ..
-  script:
-    - meson _debian_build -Dintrospection=enabled -Dman=true -Dgtk-doc=true 
-Didevice=enabled --wipe
-    - ninja -C _debian_build
-    - catchsegv meson test -C _debian_build --print-errorlogs --no-stdsplit
-    - .ci/fail_skipped_tests.py _debian_build/meson-logs/testlog.junit.xml
+test_fedora:
+  extends:
+    - .fedora-defaults
+    - .test
+  needs:
+    - build_fedora
 
-  artifacts:
-    when: always
-    expire_in: 1 week
-    paths:
-      - "${CI_PROJECT_DIR}/_debian_build/meson-logs/"
-  except:
-    variables:
-      - $CI_PIPELINE_SOURCE == "schedule"
+test_debian:
+  extends:
+    - .debian-defaults
+    - .test
+  needs:
+    - build_debian
 
 check_abi:
+  extends:
+    - .fedora-defaults
   stage: test
   before_script:
-    - cd libgudev
-    - dnf install -y glibc-langpack-fr umockdev-devel
-    - meson _build -Dprefix=/usr
-    - ninja -C _build install
-    - cd ..
+    - *install_libgudev_from_git
   script:
     - check-abi --suppr .ci/upower.suppr --parameters="-Dman=false 
-Dgtk-doc=false -Didevice=enabled"  ${LAST_ABI_BREAK} $(git rev-parse HEAD)
-  except:
-    variables:
-      - $CI_PIPELINE_SOURCE == "schedule"
+  needs:
+    - build_fedora
 
 # Create docs artifact for the website.
 # Note that the last successful artifact build is always kept, so 1 day as
 # expiry is completely fine.
 docs:
+  extends:
+    - .fedora-defaults
   stage: deploy
-  dependencies:
-   - build
+  needs:
+   - build_fedora
   script:
-    - meson _build -Dintrospection=enabled -Dman=true -Dgtk-doc=true 
-Didevice=enabled
-    - ninja -C _build/ UPower-doc
+    - .ci/meson-build.sh --skip-test
   artifacts:
     name: "docs"
     when: always
     expire_in: 1 day
     paths:
-      - "_build/doc/html"
+      - "$MESON_BUILDDIR/doc/html"
   only:
     - master
-  except:
-    variables:
-      - $CI_PIPELINE_SOURCE == "schedule"
-
-# CONTAINERS creation stage
-container_fedora_build:
-  extends: .fdo.container-build@fedora
-  only:
-    variables:
-      - $CI_PIPELINE_SOURCE == "schedule" && $CRON_TASK == "BUILD_CI_IMAGES"
-  variables:
-    GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the 
image
-    FDO_FORCE_REBUILD: 1
-    # a list of packages to install
-    FDO_DISTRIBUTION_PACKAGES:
-      $DEPENDENCIES
-    FDO_DISTRIBUTION_EXEC: |
-      curl 
https://gitlab.freedesktop.org/hadess/check-abi/-/raw/main/contrib/check-abi-fedora.sh
 | bash
-
-# CONTAINERS creation stage
-container_debian_build:
-  extends: .fdo.container-build@debian
-  only:
-    variables:
-      - $CI_PIPELINE_SOURCE == "schedule" && $CRON_TASK == "BUILD_CI_IMAGES"
   variables:
-    FDO_DISTRIBUTION_TAG: latest
-    FDO_DISTRIBUTION_VERSION: trixie
-    GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the 
image
-    FDO_FORCE_REBUILD: 1
-    # a list of packages to install
-    FDO_DISTRIBUTION_PACKAGES:
-      autoconf
-      automake
-      autopoint
-      autotools-dev
-      binutils
-      binutils-common
-      binutils-x86-64-linux-gnu
-      bsdextrautils
-      build-essential
-      bzip2
-      cpp
-      cpp-14
-      cpp-14-x86-64-linux-gnu
-      cpp-x86-64-linux-gnu
-      curl
-      debhelper
-      git
-      g++
-      g++-14
-      g++-14-x86-64-linux-gnu
-      g++-x86-64-linux-gnu
-      gcc
-      gcc-14
-      gcc-14-x86-64-linux-gnu
-      gcc-x86-64-linux-gnu
-      m4
-      make
-      systemd-dev
-      python3-dbus
-      python3-packaging
-      python3-dbusmock
-      gir1.2-upowerglib-1.0
-      libpolkit-gobject-1-dev
-    FDO_DISTRIBUTION_EXEC: >-
-      echo "deb-src http://deb.debian.org/debian/ trixie main contrib 
non-free" >> /etc/apt/sources.list &&
-      apt update &&
-      apt build-dep -y upower &&
-      curl 
https://gitlab.freedesktop.org/hadess/check-abi/-/raw/main/contrib/check-abi-fedora.sh
 | bash
+    MESON_ARGS: '-Dintrospection=enabled -Dman=true -Dgtk-doc=true 
-Didevice=enabled'
+    NINJA_ARGS: 'UPower-doc'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upower-1.91.2/HACKING.md new/upower-1.91.3/HACKING.md
--- old/upower-1.91.2/HACKING.md        2026-04-01 10:20:02.000000000 +0200
+++ new/upower-1.91.3/HACKING.md        2026-07-02 09:39:04.000000000 +0200
@@ -79,10 +79,12 @@
   ```text
   === begin example commit ===
   short explanation of the commit  
-  
+
   Longer explanation explaining exactly what's changed, whether any
   external or private interfaces changed, what bugs were fixed (with bug
   tracker reference if applicable) and so forth. Be concise but not too brief.
+
+  Signed-off-by : Username <[email protected]>
   === end example commit ===
   ```
 
@@ -101,6 +103,8 @@
   git commit -a --author "Joe Coder <[email protected]>"
   ```
 
+- "Signed-off-by:" tags should be included" in the commit message.
+
 ## Coding Style
 
 - Please follow the coding style already used.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upower-1.91.2/NEWS new/upower-1.91.3/NEWS
--- old/upower-1.91.2/NEWS      2026-04-01 10:20:02.000000000 +0200
+++ new/upower-1.91.3/NEWS      2026-07-02 09:39:04.000000000 +0200
@@ -1,3 +1,15 @@
+Version 1.91.3
+--------------
+Released: 2026-07-02
+
+- Feature: up-device-battery: Prefer "Standard" over "Fast" charging (!316, 
#344)
+- Fix: Resolve potential leaks (!327)
+- Fix: Potential out-of-bound access (!328)
+- Fix: Improve access control (!326)
+- Fix: Remove unused codes (!329)
+- Fix: Fix for Asus Battery Charge Threshold Detection (!330, #347)
+- CI: code refactoring (!324)
+
 Version 1.91.2
 --------------
 Released: 2026-04-01
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upower-1.91.2/libupower-glib/up-client.c 
new/upower-1.91.3/libupower-glib/up-client.c
--- old/upower-1.91.2/libupower-glib/up-client.c        2026-04-01 
10:20:02.000000000 +0200
+++ new/upower-1.91.3/libupower-glib/up-client.c        2026-07-02 
09:39:04.000000000 +0200
@@ -238,6 +238,8 @@
        gboolean ret;
        UpDevice *device;
 
+       g_return_val_if_fail (UP_IS_CLIENT (client), NULL);
+
        device = up_device_new ();
        ret = up_device_set_object_path_sync (device, 
"/org/freedesktop/UPower/devices/DisplayDevice", NULL, NULL);
        if (!ret) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upower-1.91.2/meson.build 
new/upower-1.91.3/meson.build
--- old/upower-1.91.2/meson.build       2026-04-01 10:20:02.000000000 +0200
+++ new/upower-1.91.3/meson.build       2026-07-02 09:39:04.000000000 +0200
@@ -1,5 +1,5 @@
 project('upower', 'c',
-    version: '1.91.2',
+    version: '1.91.3',
     license: 'GPLv2+',
     default_options: [
         'buildtype=debugoptimized',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upower-1.91.2/rules/60-upower-battery.rules 
new/upower-1.91.3/rules/60-upower-battery.rules
--- old/upower-1.91.2/rules/60-upower-battery.rules     2026-04-01 
10:20:02.000000000 +0200
+++ new/upower-1.91.3/rules/60-upower-battery.rules     2026-07-02 
09:39:04.000000000 +0200
@@ -1,10 +1,10 @@
 ACTION=="remove", GOTO="battery_end"
 
-SUBSYSTEM=="power_supply", ATTR{charge_control_start_threshold}!="", \
+SUBSYSTEM=="power_supply", TEST=="charge_control_start_threshold", \
   IMPORT{builtin}="hwdb 
'battery:$kernel:$attr{model_name}:$attr{[dmi/id]modalias}'", \
   GOTO="battery_end"
 
-SUBSYSTEM=="power_supply", ATTR{charge_control_end_threshold}!="", \
+SUBSYSTEM=="power_supply", TEST=="charge_control_end_threshold", \
   IMPORT{builtin}="hwdb 
'battery:$kernel:$attr{model_name}:$attr{[dmi/id]modalias}'", \
   GOTO="battery_end"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upower-1.91.2/src/linux/integration-test.py 
new/upower-1.91.3/src/linux/integration-test.py
--- old/upower-1.91.2/src/linux/integration-test.py     2026-04-01 
10:20:02.000000000 +0200
+++ new/upower-1.91.3/src/linux/integration-test.py     2026-07-02 
09:39:04.000000000 +0200
@@ -2364,10 +2364,10 @@
         with open(f"/sys/class/power_supply/{battery_name}/charge_types") as 
fp:
             self.assertEqual(fp.read(), "Standard")
 
-        # Battery 2 switches to "Fast"
+        # Battery 2 switches to "Standard"
         battery_name = bat2_up.split("_")[-1]
         with open(f"/sys/class/power_supply/{battery_name}/charge_types") as 
fp:
-            self.assertEqual(fp.read(), "Fast")
+            self.assertEqual(fp.read(), "Standard")
 
     def 
test_battery_charge_limit_multiple_batteries_get_charge_threshold_settings_supported(
         self,
@@ -3707,6 +3707,64 @@
 
         self.stop_daemon()
 
+    def test_history_zero_resolution_no_crash(self):
+        """GetHistory with resolution=0 should not crash the daemon (FPE 
fix)"""
+
+        self.testbed.add_device(
+            "power_supply",
+            "BAT0",
+            None,
+            [
+                "type",
+                "Battery",
+                "present",
+                "1",
+                "status",
+                "Discharging",
+                "energy_full",
+                "60000000",
+                "energy_full_design",
+                "80000000",
+                "energy_now",
+                "50000000",
+                "voltage_now",
+                "12000000",
+            ],
+            [],
+        )
+
+        self.start_daemon()
+
+        devs = self.proxy.EnumerateDevices()
+        self.assertEqual(len(devs), 1)
+        bat0_up = devs[0]
+
+        # Allow the initial cold-plug to populate history data
+        time.sleep(0.5)
+
+        # Before the fix, resolution=0 would cause integer division by zero
+        # (SIGFPE) inside up_history_array_limit_resolution, crashing the 
daemon.
+        result = self.dbus.call_sync(
+            UP,
+            bat0_up,
+            UP_DEVICE,
+            "GetHistory",
+            GLib.Variant("(suu)", ("charge", 0, 0)),
+            GLib.VariantType.new("(a(udu))"),
+            Gio.DBusCallFlags.NO_AUTO_START,
+            -1,
+            None,
+        )
+
+        history_data = result.unpack()[0]
+        self.assertEqual(len(history_data), 0)
+
+        # Verify the daemon is still responsive after the call
+        devs_after = self.proxy.EnumerateDevices()
+        self.assertEqual(len(devs_after), 1)
+
+        self.stop_daemon()
+
     def test_battery_id_change(self):
         """check that we save/load the history correctly when the ID changes"""
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upower-1.91.2/src/linux/up-backend.c 
new/upower-1.91.3/src/linux/up-backend.c
--- old/upower-1.91.2/src/linux/up-backend.c    2026-04-01 10:20:02.000000000 
+0200
+++ new/upower-1.91.3/src/linux/up-backend.c    2026-07-02 09:39:04.000000000 
+0200
@@ -894,6 +894,7 @@
        g_clear_object (&backend->priv->daemon);
        g_clear_object (&backend->priv->device_list);
        g_clear_object (&backend->priv->gudev_client);
+       g_clear_object (&backend->priv->udev_enum);
 
        bus = g_dbus_proxy_get_connection (backend->priv->logind_proxy);
        g_dbus_connection_signal_unsubscribe (bus,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upower-1.91.2/src/linux/up-device-bluez.c 
new/upower-1.91.3/src/linux/up-device-bluez.c
--- old/upower-1.91.2/src/linux/up-device-bluez.c       2026-04-01 
10:20:02.000000000 +0200
+++ new/upower-1.91.3/src/linux/up-device-bluez.c       2026-07-02 
09:39:04.000000000 +0200
@@ -162,7 +162,11 @@
        UpDeviceKind kind;
        const char *uuid;
        const char *model;
-       GVariant *v;
+       g_autoptr (GVariant) v_appearance = NULL;
+       g_autoptr (GVariant) v_class = NULL;
+       g_autoptr (GVariant) v_address = NULL;
+       g_autoptr (GVariant) v_alias = NULL;
+       g_autoptr (GVariant) v_percentage = NULL;
        guchar percentage;
 
        /* Static device properties */
@@ -182,30 +186,27 @@
                return FALSE;
        }
 
-       v = g_dbus_proxy_get_cached_property (proxy, "Appearance");
-       if (v && g_variant_get_uint16 (v) != 0) {
+       v_appearance = g_dbus_proxy_get_cached_property (proxy, "Appearance");
+       v_class = g_dbus_proxy_get_cached_property (proxy, "Class");
+       if (v_appearance && g_variant_get_uint16 (v_appearance) != 0) {
                guint16 appearance;
 
-               appearance = g_variant_get_uint16 (v);
+               appearance = g_variant_get_uint16 (v_appearance);
                kind = appearance_to_kind (appearance);
-               g_variant_unref (v);
-       } else if ((v = g_dbus_proxy_get_cached_property (proxy, "Class"))) {
+       } else if (v_class) {
                guint32 class;
 
-               class = g_variant_get_uint32 (v);
+               class = g_variant_get_uint32 (v_class);
                kind = class_to_kind (class);
-               g_variant_unref (v);
        } else {
                kind = UP_DEVICE_KIND_BLUETOOTH_GENERIC;
        }
 
-       v = g_dbus_proxy_get_cached_property (proxy, "Address");
-       uuid = g_variant_get_string (v, NULL);
-       g_variant_unref (v);
-
-       v = g_dbus_proxy_get_cached_property (proxy, "Alias");
-       model = g_variant_get_string (v, NULL);
-       g_variant_unref (v);
+       v_address = g_dbus_proxy_get_cached_property (proxy, "Address");
+       uuid = g_variant_get_string (v_address, NULL);
+
+       v_alias = g_dbus_proxy_get_cached_property (proxy, "Alias");
+       model = g_variant_get_string (v_alias, NULL);
 
        /* hardcode some values */
        g_object_set (device,
@@ -234,7 +235,8 @@
                return FALSE;
        }
 
-       percentage = g_variant_get_byte (g_dbus_proxy_get_cached_property 
(proxy, "Percentage"));
+       v_percentage = g_dbus_proxy_get_cached_property (proxy, "Percentage");
+       percentage = g_variant_get_byte (v_percentage);
 
        g_object_set (device,
                      "is-present", TRUE,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upower-1.91.2/src/linux/up-device-hid.c 
new/upower-1.91.3/src/linux/up-device-hid.c
--- old/upower-1.91.2/src/linux/up-device-hid.c 2026-04-01 10:20:02.000000000 
+0200
+++ new/upower-1.91.3/src/linux/up-device-hid.c 2026-07-02 09:39:04.000000000 
+0200
@@ -460,7 +460,7 @@
        hid = UP_DEVICE_HID (object);
        g_return_if_fail (hid->priv != NULL);
 
-       if (hid->priv->fd > 0)
+       if (hid->priv->fd >= 0)
                close (hid->priv->fd);
 
        G_OBJECT_CLASS (up_device_hid_parent_class)->finalize (object);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upower-1.91.2/src/linux/up-device-supply-battery.c 
new/upower-1.91.3/src/linux/up-device-supply-battery.c
--- old/upower-1.91.2/src/linux/up-device-supply-battery.c      2026-04-01 
10:20:02.000000000 +0200
+++ new/upower-1.91.3/src/linux/up-device-supply-battery.c      2026-07-02 
09:39:04.000000000 +0200
@@ -71,13 +71,7 @@
 {
        UpDeviceBattery          parent;
        gboolean                 has_coldplug_values;
-       gboolean                 coldplug_units;
-       gdouble                 *energy_old;
-       guint                    energy_old_first;
-       gdouble                  rate_old;
        guint                    supported_charge_types;
-       UpDeviceSupplyBatteryChargeTypes charge_type;
-       UpDeviceSupplyBatteryChargeThresholdSettings charge_threshold_settings;
        gboolean                 charge_threshold_by_charge_type;
        gboolean                 shown_invalid_voltage_warning;
        gboolean                 ignore_system_percentage;
@@ -302,12 +296,12 @@
        UpDeviceSupplyBattery *self = UP_DEVICE_SUPPLY_BATTERY (device);
        UpDeviceSupplyBatteryChargeTypes charge_types = 
self->supported_charge_types;
 
-       if (charge_types & UP_DEVICE_SUPPLY_BATTERY_CHARGE_TYPES_FAST)
-               return UP_DEVICE_SUPPLY_BATTERY_CHARGE_TYPES_FAST;
-
        if (charge_types & UP_DEVICE_SUPPLY_BATTERY_CHARGE_TYPES_STANDARD)
                return UP_DEVICE_SUPPLY_BATTERY_CHARGE_TYPES_STANDARD;
 
+       if (charge_types & UP_DEVICE_SUPPLY_BATTERY_CHARGE_TYPES_FAST)
+               return UP_DEVICE_SUPPLY_BATTERY_CHARGE_TYPES_FAST;
+
        if (charge_types & UP_DEVICE_SUPPLY_BATTERY_CHARGE_TYPES_ADAPTIVE)
                return UP_DEVICE_SUPPLY_BATTERY_CHARGE_TYPES_ADAPTIVE;
 
@@ -336,7 +330,6 @@
        for (int i = 0; i < g_strv_length(types); i++) {
                if (g_utf8_strchr (types[i], 1, '[') != NULL) {
                        tmp_type = remove_brackets (types[i]);
-                       self->charge_type = 
up_device_battery_charge_type_str_to_enum (tmp_type);
                } else {
                        tmp_type = g_strdup (types[i]);
                }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upower-1.91.2/src/linux/up-device-supply.c 
new/upower-1.91.3/src/linux/up-device-supply.c
--- old/upower-1.91.2/src/linux/up-device-supply.c      2026-04-01 
10:20:02.000000000 +0200
+++ new/upower-1.91.3/src/linux/up-device-supply.c      2026-07-02 
09:39:04.000000000 +0200
@@ -265,8 +265,8 @@
 
        /* initial values */
        if (!supply->priv->has_coldplug_values) {
-               gchar *model_name;
-               gchar *serial_number;
+               g_autofree gchar *model_name = NULL;
+               g_autofree gchar *serial_number = NULL;
 
                /* get values which may be blank */
                model_name = up_device_supply_get_string (native, "model_name");
@@ -286,9 +286,6 @@
 
                /* we only coldplug once, as these values will never change */
                supply->priv->has_coldplug_values = TRUE;
-
-               g_free (model_name);
-               g_free (serial_number);
        }
 
        /* Some devices change whether they're present or not */
@@ -336,9 +333,9 @@
        g_autoptr (GUdevDevice) parent_sibling = NULL;
        UpDeviceKind cur_type, new_type;
        gboolean is_same_parent = FALSE;
-       char *new_model_name;
-       char *model_name;
-       char *serial_number;
+       g_autofree gchar *new_model_name = NULL;
+       g_autofree gchar *model_name = NULL;
+       g_autofree gchar *serial_number = NULL;
        int i;
        struct {
                const char *prop;
@@ -414,7 +411,6 @@
                g_object_set (device,
                              "model", model_name,
                              NULL);
-               g_free (model_name);
        }
 
        if (serial_number == NULL) {
@@ -423,7 +419,6 @@
                g_object_set (device,
                              "serial", serial_number,
                              NULL);
-               g_free (serial_number);
        }
 
        new_type = UP_DEVICE_KIND_UNKNOWN;
@@ -497,7 +492,6 @@
                } else {
                        g_object_set (device, "type", new_type, NULL);
                }
-               g_free (new_model_name);
        }
 }
 
@@ -549,7 +543,7 @@
 up_device_supply_guess_type (GUdevDevice *native,
                             const char *native_path)
 {
-       gchar *device_type;
+       g_autofree gchar *device_type = NULL;
        UpDeviceKind type = UP_DEVICE_KIND_UNKNOWN;
 
        device_type = up_device_supply_get_string (native, "type");
@@ -587,7 +581,6 @@
        }
 
 out:
-       g_free (device_type);
        return type;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upower-1.91.2/src/linux/up-device-wup.c 
new/upower-1.91.3/src/linux/up-device-wup.c
--- old/upower-1.91.2/src/linux/up-device-wup.c 2026-04-01 10:20:02.000000000 
+0200
+++ new/upower-1.91.3/src/linux/up-device-wup.c 2026-07-02 09:39:04.000000000 
+0200
@@ -418,7 +418,7 @@
        wup = UP_DEVICE_WUP (object);
        g_return_if_fail (wup->priv != NULL);
 
-       if (wup->priv->fd > 0)
+       if (wup->priv->fd >= 0)
                close (wup->priv->fd);
 
        G_OBJECT_CLASS (up_device_wup_parent_class)->finalize (object);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upower-1.91.2/src/linux/up-input.c 
new/upower-1.91.3/src/linux/up-input.c
--- old/upower-1.91.2/src/linux/up-input.c      2026-04-01 10:20:02.000000000 
+0200
+++ new/upower-1.91.3/src/linux/up-input.c      2026-07-02 09:39:04.000000000 
+0200
@@ -91,12 +91,14 @@
 up_input_str_to_bitmask (const gchar *s, glong *bitmask, size_t max_size)
 {
        gint i, j;
-       gchar **v;
+       g_auto (GStrv) v = NULL;
        gint num_bits_set = 0;
+       gsize max_elements = max_size / sizeof(glong);
 
        memset (bitmask, 0, max_size);
-       v = g_strsplit (s, " ", max_size);
-       for (i = g_strv_length (v) - 1, j = 0; i >= 0; i--, j++) {
+
+       v = g_strsplit (s, " ", 0);
+       for (i = g_strv_length (v) - 1, j = 0; i >= 0 && (size_t) j < 
max_elements; i--, j++) {
                gulong val;
 
                val = strtoul (v[i], NULL, 16);
@@ -107,7 +109,6 @@
                        val &= (val - 1);
                }
        }
-       g_strfreev(v);
 
        return num_bits_set;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upower-1.91.2/src/linux/up-kbd-backlight-led.c 
new/upower-1.91.3/src/linux/up-kbd-backlight-led.c
--- old/upower-1.91.2/src/linux/up-kbd-backlight-led.c  2026-04-01 
10:20:02.000000000 +0200
+++ new/upower-1.91.3/src/linux/up-kbd-backlight-led.c  2026-07-02 
09:39:04.000000000 +0200
@@ -181,7 +181,6 @@
        UpKbdBacklightLedPrivate *priv = 
up_kbd_backlight_led_get_instance_private (kbd);
        gint brightness = 0;
        gchar buf[16];
-       g_autofree gchar *ret_str = NULL;
        glong len;
        gchar *end = NULL;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upower-1.91.2/src/up-device-battery.c 
new/upower-1.91.3/src/up-device-battery.c
--- old/upower-1.91.2/src/up-device-battery.c   2026-04-01 10:20:02.000000000 
+0200
+++ new/upower-1.91.3/src/up-device-battery.c   2026-07-02 09:39:04.000000000 
+0200
@@ -627,12 +627,12 @@
 static gboolean
 up_device_battery_charge_threshold_state_write(UpDeviceBattery *self, gboolean 
enabled, const gchar *state_file) {
        g_autofree gchar *filename = NULL;
-       GError *error = NULL;
+       g_autoptr (GError) error = NULL;
        const gchar *state_dir;
 
        state_dir = up_device_battery_get_state_dir (self);
        filename = g_build_filename (state_dir, state_file, NULL);
-       if (!g_file_set_contents (filename, enabled ? "1": "0" , -1, &error)) {
+       if (!g_file_set_contents_full (filename, enabled ? "1": "0" , -1, 
G_FILE_SET_CONTENTS_CONSISTENT, 0640, &error)) {
                g_error ("failed to save battery charge threshold: %s", 
error->message);
                return FALSE;
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upower-1.91.2/src/up-device-kbd-backlight.c 
new/upower-1.91.3/src/up-device-kbd-backlight.c
--- old/upower-1.91.2/src/up-device-kbd-backlight.c     2026-04-01 
10:20:02.000000000 +0200
+++ new/upower-1.91.3/src/up-device-kbd-backlight.c     2026-07-02 
09:39:04.000000000 +0200
@@ -364,9 +364,15 @@
 static void
 up_device_kbd_backlight_finalize (GObject *object)
 {
+       UpDeviceKbdBacklight *kbd_backlight = UP_DEVICE_KBD_BACKLIGHT (object);
+       UpDeviceKbdBacklightPrivate *priv = 
up_device_kbd_backlight_get_instance_private (kbd_backlight);
+
        g_return_if_fail (object != NULL);
        g_return_if_fail (UP_IS_DEVICE_KBD_BACKLIGHT (object));
 
+       g_clear_object (&priv->daemon);
+       g_clear_object (&priv->native);
+
        G_OBJECT_CLASS (up_device_kbd_backlight_parent_class)->finalize 
(object);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upower-1.91.2/src/up-device.c 
new/upower-1.91.3/src/up-device.c
--- old/upower-1.91.2/src/up-device.c   2026-04-01 10:20:02.000000000 +0200
+++ new/upower-1.91.3/src/up-device.c   2026-07-02 09:39:04.000000000 +0200
@@ -184,7 +184,7 @@
 }
 
 static gboolean
-up_device_history_filter (UpDevice *device, UpHistory *history)
+up_device_history_filter (UpDevice *device)
 {
        UpExportedDevice *skeleton = UP_EXPORTED_DEVICE (device);
 
@@ -204,7 +204,7 @@
 
        ensure_history (device);
 
-       if (!up_device_history_filter (device, priv->history))
+       if (!up_device_history_filter (device))
                return;
 
        /* save new history */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upower-1.91.2/src/up-history.c 
new/upower-1.91.3/src/up-history.c
--- old/upower-1.91.2/src/up-history.c  2026-04-01 10:20:02.000000000 +0200
+++ new/upower-1.91.3/src/up-history.c  2026-07-02 09:39:04.000000000 +0200
@@ -57,11 +57,6 @@
        gchar                   *dir;
 };
 
-enum {
-       UP_HISTORY_PROGRESS,
-       UP_HISTORY_LAST_SIGNAL
-};
-
 G_DEFINE_TYPE_WITH_PRIVATE (UpHistory, up_history, G_TYPE_OBJECT)
 
 /**
@@ -134,6 +129,9 @@
        new = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
        g_debug ("length of array (before) %i", array->len);
 
+       if (max_num == 0)
+               return new;
+
        /* check length */
        length = array->len;
        if (length == 0)
@@ -218,7 +216,7 @@
        }
 
        /* new data */
-       array_new = g_ptr_array_new ();
+       array_new = g_ptr_array_new_with_free_func ((GDestroyNotify) 
g_object_unref);
        time_now = g_get_real_time ();
        g_debug ("limiting data to last %i seconds", timespan);
 
@@ -471,7 +469,7 @@
        }
 
        /* save to disk */
-       ret = g_file_set_contents (filename, part, -1, &error);
+       ret = g_file_set_contents_full (filename, part, -1, 
G_FILE_SET_CONTENTS_CONSISTENT, 0640, &error);
        if (!ret) {
                g_warning ("failed to set data: %s", error->message);
                g_error_free (error);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upower-1.91.2/src/up-kbd-backlight.c 
new/upower-1.91.3/src/up-kbd-backlight.c
--- old/upower-1.91.2/src/up-kbd-backlight.c    2026-04-01 10:20:02.000000000 
+0200
+++ new/upower-1.91.3/src/up-kbd-backlight.c    2026-07-02 09:39:04.000000000 
+0200
@@ -246,7 +246,6 @@
        gchar *path_now = NULL;
        gchar *path_hw_changed = NULL;
        gchar *buf_max = NULL;
-       gchar *buf_now = NULL;
        GError *error = NULL;
 
        kbd_backlight->priv->fd = -1;
@@ -313,7 +312,6 @@
        g_free (path_now);
        g_free (path_hw_changed);
        g_free (buf_max);
-       g_free (buf_now);
        return found;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upower-1.91.2/src/up-main.c 
new/upower-1.91.3/src/up-main.c
--- old/upower-1.91.2/src/up-main.c     2026-04-01 10:20:02.000000000 +0200
+++ new/upower-1.91.3/src/up-main.c     2026-07-02 09:39:04.000000000 +0200
@@ -287,7 +287,7 @@
 
        /* immediately exit */
        if (immediate_exit) {
-               g_timeout_add (50, (GSourceFunc) up_main_timed_exit_cb, state);
+               timer_id = g_timeout_add (50, (GSourceFunc) 
up_main_timed_exit_cb, state);
                g_source_set_name_by_id (timer_id, "[upower] 
up_main_timed_exit_cb");
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upower-1.91.2/src/up-polkit.c 
new/upower-1.91.3/src/up-polkit.c
--- old/upower-1.91.2/src/up-polkit.c   2026-04-01 10:20:02.000000000 +0200
+++ new/upower-1.91.3/src/up-polkit.c   2026-07-02 09:39:04.000000000 +0200
@@ -137,7 +137,6 @@
 up_polkit_finalize (GObject *object)
 {
 #ifdef HAVE_POLKIT
-       g_autoptr (GError) error = NULL;
        UpPolkit *polkit;
        g_return_if_fail (UP_IS_POLKIT (object));
        polkit = UP_POLKIT (object);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upower-1.91.2/src/up-self-test.c 
new/upower-1.91.3/src/up-self-test.c
--- old/upower-1.91.2/src/up-self-test.c        2026-04-01 10:20:02.000000000 
+0200
+++ new/upower-1.91.3/src/up-self-test.c        2026-07-02 09:39:04.000000000 
+0200
@@ -285,6 +285,8 @@
        /* remove these test files */
        up_test_history_remove_temp_files ();
        rmdir (history_dir);
+       g_free (history_dir);
+       history_dir = NULL;
 }
 
 static void
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/upower-1.91.2/tools/up-tool.c 
new/upower-1.91.3/tools/up-tool.c
--- old/upower-1.91.2/tools/up-tool.c   2026-04-01 10:20:02.000000000 +0200
+++ new/upower-1.91.3/tools/up-tool.c   2026-07-02 09:39:04.000000000 +0200
@@ -28,11 +28,11 @@
 #include <sys/time.h>
 #include <glib.h>
 #include <glib/gi18n-lib.h>
+#include <glib-unix.h>
 #include <locale.h>
 
 #include "upower.h"
 
-static GMainLoop *loop;
 static gboolean opt_monitor_detail = FALSE;
 
 /**
@@ -41,8 +41,8 @@
 static gchar *
 up_tool_get_timestamp (void)
 {
-       gchar *str_time;
-       gchar *timestamp;
+       g_autofree gchar *str_time = NULL;
+       g_autofree gchar *timestamp = NULL;
        time_t the_time;
        struct timeval time_val;
 
@@ -53,8 +53,7 @@
 
        /* generate header text */
        timestamp = g_strdup_printf ("%s.%03i", str_time, (gint) 
time_val.tv_usec / 1000);
-       g_free (str_time);
-       return timestamp;
+       return g_steal_pointer (&timestamp);
 }
 
 /**
@@ -63,16 +62,14 @@
 static void
 up_tool_device_added_cb (UpClient *client, UpDevice *device, gpointer 
user_data)
 {
-       gchar *timestamp;
-       gchar *text = NULL;
+       g_autofree gchar *timestamp = NULL;
+       g_autofree gchar *text = NULL;
        timestamp = up_tool_get_timestamp ();
        g_print ("[%s]\tdevice added:     %s\n", timestamp, 
up_device_get_object_path (device));
        if (opt_monitor_detail) {
                text = up_device_to_text (device);
                g_print ("%s\n", text);
        }
-       g_free (timestamp);
-       g_free (text);
 }
 
 /**
@@ -81,8 +78,8 @@
 static void
 up_tool_device_changed_cb (UpDevice *device, GParamSpec *pspec, gpointer 
user_data)
 {
-       gchar *timestamp;
-       gchar *text = NULL;
+       g_autofree gchar *timestamp = NULL;
+       g_autofree gchar *text = NULL;
        timestamp = up_tool_get_timestamp ();
        g_print ("[%s]\tdevice changed:     %s\n", timestamp, 
up_device_get_object_path (device));
        if (opt_monitor_detail) {
@@ -90,8 +87,6 @@
                text = up_device_to_text (device);
                g_print ("%s\n", text);
        }
-       g_free (timestamp);
-       g_free (text);
 }
 
 /**
@@ -100,12 +95,11 @@
 static void
 up_tool_device_removed_cb (UpClient *client, const char *object_path, gpointer 
user_data)
 {
-       gchar *timestamp;
+       g_autofree gchar *timestamp = NULL;
        timestamp = up_tool_get_timestamp ();
        g_print ("[%s]\tdevice removed:   %s\n", timestamp, object_path);
        if (opt_monitor_detail)
                g_print ("\n");
-       g_free (timestamp);
 }
 
 /**
@@ -114,11 +108,11 @@
 static void
 up_client_print (UpClient *client)
 {
-       gchar *daemon_version;
+       g_autofree gchar *daemon_version = NULL;
        gboolean on_battery;
        gboolean lid_is_closed;
        gboolean lid_is_present;
-       char *action;
+       g_autofree gchar *action = NULL;
 
        g_object_get (client,
                      "daemon-version", &daemon_version,
@@ -133,9 +127,6 @@
        g_print ("  lid-is-present:  %s\n", lid_is_present ? "yes" : "no");
        action = up_client_get_critical_action (client);
        g_print ("  critical-action: %s\n", action);
-       g_free (action);
-
-       g_free (daemon_version);
 }
 
 /**
@@ -144,23 +135,23 @@
 static void
 up_tool_changed_cb (UpClient *client, GParamSpec *pspec, gpointer user_data)
 {
-       gchar *timestamp;
+       g_autofree gchar *timestamp = NULL;
+
        timestamp = up_tool_get_timestamp ();
        g_print ("[%s]\tdaemon changed:\n", timestamp);
        if (opt_monitor_detail) {
                up_client_print (client);
                g_print ("\n");
        }
-       g_free (timestamp);
 }
 
 /**
  * up_tool_do_monitor:
  **/
 static gboolean
-up_tool_do_monitor (UpClient *client)
+up_tool_do_monitor (UpClient *client, GMainLoop *loop)
 {
-       GPtrArray *devices;
+       g_autoptr (GPtrArray) devices = NULL;
        guint i;
 
        g_print ("Monitoring activity from the power daemon. Press Ctrl+C to 
cancel.\n");
@@ -265,27 +256,38 @@
        return 0;
 }
 
+static gboolean
+up_tool_signal_cb (gpointer user_data)
+{
+       GMainLoop *loop = user_data;
+
+       g_debug ("Caught signal, exiting");
+       g_main_loop_quit (loop);
+       return G_SOURCE_REMOVE;
+}
+
 /**
  * main:
  **/
 int
 main (int argc, char **argv)
 {
+       g_autoptr (GMainLoop) loop = NULL;
        GOptionContext *context;
        gboolean opt_battery = FALSE;
        gboolean opt_dump = FALSE;
        gboolean opt_enumerate = FALSE;
        gboolean opt_monitor = FALSE;
-       gchar *opt_show_info = FALSE;
+       g_autofree gchar *opt_show_info = NULL;
        gboolean opt_version = FALSE;
        GList *device_filter = NULL;
        gboolean ret;
        gint retval;
        GError *error = NULL;
-       gchar *text = NULL;
+       g_autofree gchar *text = NULL;
 
        g_autoptr (UpClient) client = NULL;
-       UpDevice *device;
+       g_autoptr (UpDevice) device = NULL;
 
        const GOptionEntry entries[] = {
                { "battery", 'b', 0, G_OPTION_ARG_NONE, &opt_battery, _("Dump 
all parameters for battery objects"), NULL },
@@ -313,7 +315,6 @@
                return EXIT_FAILURE;
        }
 
-       loop = g_main_loop_new (NULL, FALSE);
        client = up_client_new_full (NULL, &error);
        if (client == NULL) {
                g_warning ("Cannot connect to upowerd: %s", error->message);
@@ -347,7 +348,21 @@
        }
 
        if (opt_monitor || opt_monitor_detail) {
-               if (!up_tool_do_monitor (client))
+               loop = g_main_loop_new (NULL, FALSE);
+
+               g_unix_signal_add_full (G_PRIORITY_DEFAULT,
+                                       SIGINT,
+                                       up_tool_signal_cb,
+                                       loop,
+                                       NULL);
+
+               g_unix_signal_add_full (G_PRIORITY_DEFAULT,
+                                       SIGTERM,
+                                       up_tool_signal_cb,
+                                       loop,
+                                       NULL);
+
+               if (!up_tool_do_monitor (client, loop))
                        return EXIT_FAILURE;
                return EXIT_SUCCESS;
        }
@@ -361,9 +376,7 @@
                } else {
                        text = up_device_to_text (device);
                        g_print ("%s\n", text);
-                       g_free (text);
                }
-               g_object_unref (device);
                return EXIT_SUCCESS;
        }
 }

++++++ upower.obsinfo ++++++
--- /var/tmp/diff_new_pack.4wJdfG/_old  2026-07-06 12:28:53.820237674 +0200
+++ /var/tmp/diff_new_pack.4wJdfG/_new  2026-07-06 12:28:53.832238090 +0200
@@ -1,5 +1,5 @@
 name: upower
-version: 1.91.2
-mtime: 1775031602
-commit: 17f9e8dc5a967fde13be688634a465c71fb79dd0
+version: 1.91.3
+mtime: 1782977944
+commit: 3dc5323bf9f8f84b0a038f5f36c34d49e480ee3c
 

Reply via email to