Skip to content

Commit

Permalink
tray: Load GTK and libappindicator by versioned names, except on OpenBSD
Browse files Browse the repository at this point in the history
We are expecting a specific ABI (we can see that from the declarations
listed in this file) and the whole point of SONAME versioning is to
say that the library conforms to a specific ABI. If the SONAME is not
the one we expect, then calling its functions is likely to crash.

As usual, an exception to this is that OpenBSD does not use SONAME
versioning.

Signed-off-by: Simon McVittie <[email protected]>
  • Loading branch information
smcv authored and slouken committed Jan 7, 2025
1 parent 6b38d25 commit 4290fc8
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion src/tray/unix/SDL_tray.c
Original file line number Diff line number Diff line change
Expand Up @@ -174,22 +174,31 @@ static void quit_gtk(void)
}

const char *appindicator_names[] = {
#ifdef SDL_PLATFORM_OPENBSD
"libayatana-appindicator3.so",
"libayatana-appindicator3.so.1",
"libappindicator3.so",
#else
"libayatana-appindicator3.so.1",
"libappindicator3.so.1",
#endif
NULL
};

const char *gtk_names[] = {
#ifdef SDL_PLATFORM_OPENBSD
"libgtk-3.so",
#else
"libgtk-3.so.0",
#endif
NULL
};

const char *gdk_names[] = {
#ifdef SDL_PLATFORM_OPENBSD
"libgdk-3.so",
#else
"libgdk-3.so.0",
#endif
NULL
};

Expand Down

0 comments on commit 4290fc8

Please sign in to comment.