Compare commits

...

4 Commits

Author SHA1 Message Date
Abhi
d1601d3a3c
Merge 06137147a3 into ac10768495 2025-07-20 00:29:27 +08:00
Camilla Löwy
ac10768495 Wayland: Fix memory leaks in data offer reading
The buffer storing the contents of the data offer being read could leak
if buffer reallocation or reading from the pipe failed.
2025-07-18 12:31:07 +02:00
Abhi
06137147a3
Simplify code logic for glfwIsInitialized. 2025-03-12 14:58:28 -06:00
wis31
0fc6fa88b3 Add external API to query initialization status of GLFW. 2025-03-09 14:13:25 -06:00
4 changed files with 28 additions and 0 deletions

View File

@ -133,6 +133,7 @@ information on what to include when reporting a bug.
- [Wayland] Bugfix: A drag entering a non-GLFW surface could cause a segfault - [Wayland] Bugfix: A drag entering a non-GLFW surface could cause a segfault
- [Wayland] Bugfix: Ignore key repeat events when no window has keyboard focus (#2727) - [Wayland] Bugfix: Ignore key repeat events when no window has keyboard focus (#2727)
- [Wayland] Bugfix: Reset key repeat timer when window destroyed (#2741,#2727) - [Wayland] Bugfix: Reset key repeat timer when window destroyed (#2741,#2727)
- [Wayland] Bugfix: Memory would leak if reading a data offer failed midway
- [X11] Bugfix: Running without a WM could trigger an assert (#2593,#2601,#2631) - [X11] Bugfix: Running without a WM could trigger an assert (#2593,#2601,#2631)
- [Null] Added Vulkan 'window' surface creation via `VK_EXT_headless_surface` - [Null] Added Vulkan 'window' surface creation via `VK_EXT_headless_surface`
- [Null] Added EGL context creation on Mesa via `EGL_MESA_platform_surfaceless` - [Null] Added EGL context creation on Mesa via `EGL_MESA_platform_surfaceless`

View File

@ -2254,6 +2254,26 @@ GLFWAPI int glfwInit(void);
*/ */
GLFWAPI void glfwTerminate(void); GLFWAPI void glfwTerminate(void);
/*! @brief Queries if the GLFW library is intialized.
*
* This function queries whether the GLFW libarary is in an initialized state.
* The library is considered to be in an initialized state
* when @ref glfwInit is invoked successfully, and @ref glfwTerminate has not been invoked after.
*
* @return `GLFW_TRUE` if the library is intialized, or `GLFW_FALSE` if otherwise.
*
* @thread_safety This function must only be called from the main thread.
*
* @sa @ref intro_init
* @sa @ref glfwInit
* @sa @ref glfwTerminate
*
* @since Added in version 3.4.
*
* @ingroup init
*/
GLFWAPI int glfwIsInitialized(void);
/*! @brief Sets the specified init hint to the desired value. /*! @brief Sets the specified init hint to the desired value.
* *
* This function sets hints for the next initialization of GLFW. * This function sets hints for the next initialization of GLFW.

View File

@ -437,6 +437,11 @@ GLFWAPI void glfwTerminate(void)
terminate(); terminate();
} }
GLFWAPI int glfwIsInitialized(void)
{
return _glfw.initialized;
}
GLFWAPI void glfwInitHint(int hint, int value) GLFWAPI void glfwInitHint(int hint, int value)
{ {
switch (hint) switch (hint)

View File

@ -1333,6 +1333,7 @@ static char* readDataOfferAsString(struct wl_data_offer* offer, const char* mime
if (!longer) if (!longer)
{ {
_glfwInputError(GLFW_OUT_OF_MEMORY, NULL); _glfwInputError(GLFW_OUT_OF_MEMORY, NULL);
_glfw_free(string);
close(fds[0]); close(fds[0]);
return NULL; return NULL;
} }
@ -1352,6 +1353,7 @@ static char* readDataOfferAsString(struct wl_data_offer* offer, const char* mime
_glfwInputError(GLFW_PLATFORM_ERROR, _glfwInputError(GLFW_PLATFORM_ERROR,
"Wayland: Failed to read from data offer pipe: %s", "Wayland: Failed to read from data offer pipe: %s",
strerror(errno)); strerror(errno));
_glfw_free(string);
close(fds[0]); close(fds[0]);
return NULL; return NULL;
} }