From 7f61535a1a51becd984289455dc3df97a8985996 Mon Sep 17 00:00:00 2001
From: Roeland Jago Douma <roeland@famdouma.nl>
Date: Thu, 3 Dec 2020 19:50:45 +0100
Subject: [PATCH] GD images

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
---
 lib/private/legacy/OC_Image.php | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/lib/private/legacy/OC_Image.php b/lib/private/legacy/OC_Image.php
index 3e9812c99f2..523468701c7 100644
--- a/lib/private/legacy/OC_Image.php
+++ b/lib/private/legacy/OC_Image.php
@@ -98,7 +98,14 @@ class OC_Image implements \OCP\IImage {
 	 * @return bool
 	 */
 	public function valid() { // apparently you can't name a method 'empty'...
-		return is_resource($this->resource);
+		if (is_resource($this->resource)) {
+			return true;
+		}
+		if (is_object($this->resource) && get_class($this->resource) === 'GdImage') {
+			return true;
+		}
+
+		return false;
 	}
 
 	/**
@@ -305,7 +312,13 @@ class OC_Image implements \OCP\IImage {
 	 * @throws \InvalidArgumentException in case the supplied resource does not have the type "gd"
 	 */
 	public function setResource($resource) {
-		if (get_resource_type($resource) === 'gd') {
+		// For PHP<8
+		if (is_resource($resource) && get_resource_type($resource) === 'gd') {
+			$this->resource = $resource;
+			return;
+		}
+		// PHP 8 has real objects for GD stuff
+		if (is_object($resource) && get_class($resource) === 'GdImage') {
 			$this->resource = $resource;
 			return;
 		}
-- 
GitLab