Skip to content

Commit 0dfdf1f

Browse files
committed
Fixed crash if joystick functions are passed a NULL joystick
1 parent 4ce935b commit 0dfdf1f

File tree

1 file changed

+29
-17
lines changed

1 file changed

+29
-17
lines changed

src/joystick/SDL_joystick.c

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1521,13 +1521,17 @@ const char *SDL_GetJoystickName(SDL_Joystick *joystick)
15211521
const SDL_SteamVirtualGamepadInfo *info;
15221522

15231523
SDL_LockJoysticks();
1524-
info = SDL_GetJoystickInstanceVirtualGamepadInfo(joystick->instance_id);
1525-
if (info) {
1526-
retval = info->name;
1527-
} else {
1524+
{
15281525
CHECK_JOYSTICK_MAGIC(joystick, NULL);
15291526

1530-
retval = joystick->name;
1527+
info = SDL_GetJoystickInstanceVirtualGamepadInfo(joystick->instance_id);
1528+
if (info) {
1529+
retval = info->name;
1530+
} else {
1531+
CHECK_JOYSTICK_MAGIC(joystick, NULL);
1532+
1533+
retval = joystick->name;
1534+
}
15311535
}
15321536
SDL_UnlockJoysticks();
15331537

@@ -3247,13 +3251,17 @@ Uint16 SDL_GetJoystickVendor(SDL_Joystick *joystick)
32473251
const SDL_SteamVirtualGamepadInfo *info;
32483252

32493253
SDL_LockJoysticks();
3250-
info = SDL_GetJoystickInstanceVirtualGamepadInfo(joystick->instance_id);
3251-
if (info) {
3252-
vendor = info->vendor_id;
3253-
} else {
3254-
SDL_JoystickGUID guid = SDL_GetJoystickGUID(joystick);
3254+
{
3255+
CHECK_JOYSTICK_MAGIC(joystick, 0);
32553256

3256-
SDL_GetJoystickGUIDInfo(guid, &vendor, NULL, NULL, NULL);
3257+
info = SDL_GetJoystickInstanceVirtualGamepadInfo(joystick->instance_id);
3258+
if (info) {
3259+
vendor = info->vendor_id;
3260+
} else {
3261+
SDL_JoystickGUID guid = SDL_GetJoystickGUID(joystick);
3262+
3263+
SDL_GetJoystickGUIDInfo(guid, &vendor, NULL, NULL, NULL);
3264+
}
32573265
}
32583266
SDL_UnlockJoysticks();
32593267

@@ -3266,13 +3274,17 @@ Uint16 SDL_GetJoystickProduct(SDL_Joystick *joystick)
32663274
const SDL_SteamVirtualGamepadInfo *info;
32673275

32683276
SDL_LockJoysticks();
3269-
info = SDL_GetJoystickInstanceVirtualGamepadInfo(joystick->instance_id);
3270-
if (info) {
3271-
product = info->product_id;
3272-
} else {
3273-
SDL_JoystickGUID guid = SDL_GetJoystickGUID(joystick);
3277+
{
3278+
CHECK_JOYSTICK_MAGIC(joystick, 0);
32743279

3275-
SDL_GetJoystickGUIDInfo(guid, NULL, &product, NULL, NULL);
3280+
info = SDL_GetJoystickInstanceVirtualGamepadInfo(joystick->instance_id);
3281+
if (info) {
3282+
product = info->product_id;
3283+
} else {
3284+
SDL_JoystickGUID guid = SDL_GetJoystickGUID(joystick);
3285+
3286+
SDL_GetJoystickGUIDInfo(guid, NULL, &product, NULL, NULL);
3287+
}
32763288
}
32773289
SDL_UnlockJoysticks();
32783290

0 commit comments

Comments
 (0)