Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rFgwW-00BUoK-QH for pgsql-hackers@arkaria.postgresql.org; Tue, 19 Dec 2023 20:43:56 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rFgwV-0059Nu-C6 for pgsql-hackers@arkaria.postgresql.org; Tue, 19 Dec 2023 20:43:55 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rFgwV-0059Nl-1d for pgsql-hackers@lists.postgresql.org; Tue, 19 Dec 2023 20:43:55 +0000 Received: from mail-oo1-xc29.google.com ([2607:f8b0:4864:20::c29]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rFgwS-00BDz0-2O for pgsql-hackers@postgresql.org; Tue, 19 Dec 2023 20:43:53 +0000 Received: by mail-oo1-xc29.google.com with SMTP id 006d021491bc7-589d4033e84so3136279eaf.1 for ; Tue, 19 Dec 2023 12:43:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=neon.tech; s=google; t=1703018630; x=1703623430; darn=postgresql.org; h=from:to:subject:message-id:date:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=OocWOCQQzfhhlmuM63955JP5Va/eNKrfdYWUhNF61BI=; b=NH10SlKrgNHjiBTdMZ5GBdu2LdGZV6X4o8kvvu4v+o5DI7Az3K0M2L2xgAhhNwwrzl /z93zj70Om2O0LJpWmyKn+66KK4WkTJgszKysuWFmQIryxmdK8xlCYYlKYNfdRYQAQ4K WCd5EDX5avrhmv38IxD0ZJcfPHfH7Cz7UNrgg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703018630; x=1703623430; h=from:to:subject:message-id:date:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=OocWOCQQzfhhlmuM63955JP5Va/eNKrfdYWUhNF61BI=; b=jOcp8fzPon+yM0iLo3RvuGFk9EIqLy9Mac81kaKJnJC5TVgJmywo3AabykN4MW9oKc jkK0y1oTg3fEHoUeFOHxvBBpQCt3/3EdiO9Z0eRqLmRboTRIV9KJp4xpysFZ+h4Zx+w7 ZuU9nK9W88cLFL2eTuwsdEwIq1DCvgrpOKn5xUVSXxYx9pzV78MllIZiRNxQYf/X1fol YSmE0OuA4VYwHfW+OoPrRI8c/QDfSQxnnmeDYpY6ImxPCCGgSyqv3s1QtnokhgzlnA+H Ww9M3Ys5k39uJwnEty0Bjq10xizGDdIhOiNwkVwdReCf62uWV9RWeBDp/jhltyxI/As+ utww== X-Gm-Message-State: AOJu0Yy21L9r8mETDshvpZaWoSXnAxsciylgOmUzJg4CVoZ2aQ7x7cky SpjfUk0EEH8/Cu/Fg6sGpGj1vrGaRt8VKMCCK3Rkaw== X-Google-Smtp-Source: AGHT+IGMQzuCGTutcXZ0XumsdEjkutOSZxq/e1h0aJH35WnYBGxTtAD7py4kC4Avcw2DtV9ixri+4w== X-Received: by 2002:a4a:1d86:0:b0:590:7013:af96 with SMTP id 128-20020a4a1d86000000b005907013af96mr13563410oog.19.1703018630591; Tue, 19 Dec 2023 12:43:50 -0800 (PST) Received: from localhost ([2600:1700:210:c270::3b]) by smtp.gmail.com with ESMTPSA id g4-20020a4ab044000000b00593ec3398f3sm247008oon.17.2023.12.19.12.43.49 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 19 Dec 2023 12:43:50 -0800 (PST) Content-Type: multipart/mixed; boundary=1a8676cad4b823d9fde66fa7dc22bf7add8b29d19bbda0f53fcdb2adf0dd Mime-Version: 1.0 Date: Tue, 19 Dec 2023 14:43:49 -0600 Message-Id: Subject: Add support for __attribute__((returns_nonnull)) To: "pgsql-hackers" From: "Tristan Partin" X-Mailer: aerc 0.16.0-93-gbd29700e708d List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --1a8676cad4b823d9fde66fa7dc22bf7add8b29d19bbda0f53fcdb2adf0dd Content-Type: multipart/alternative; boundary=44c4dbc01f3f555809da5e630a41454f5a213d242eef04b4bf9537facce3 --44c4dbc01f3f555809da5e630a41454f5a213d242eef04b4bf9537facce3 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed Here is a patch which adds support for the returns_nonnull attribute=20 alongside all the other attributes we optionally support. I recently wound up in a situation where I was checking for NULL return=20 values of a function that couldn't ever return NULL because the=20 inability to allocate memory was always elog(ERROR)ed (aborted). I didn't go through and mark anything, but I feel like it could be=20 useful for people going forward, including myself. --=20 Tristan Partin Neon (https://neon.tech) --44c4dbc01f3f555809da5e630a41454f5a213d242eef04b4bf9537facce3-- --1a8676cad4b823d9fde66fa7dc22bf7add8b29d19bbda0f53fcdb2adf0dd Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v1-0001-Add-support-for-__attribute__-returns_nonnull.patch Content-Type: text/x-patch; charset=utf-8; name=v1-0001-Add-support-for-__attribute__-returns_nonnull.patch RnJvbSAxNWEzNmQ2ODUxOWIzMzJlN2FlOTcwNzA4Mzk5NzQ0Y2JjNjljNmMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUcmlzdGFuIFBhcnRpbiA8dHJpc3RhbkBuZW9uLnRlY2g+CkRh dGU6IFR1ZSwgMTkgRGVjIDIwMjMgMTQ6Mzk6MDMgLTA2MDAKU3ViamVjdDogW1BBVENIIHYxXSBB ZGQgc3VwcG9ydCBmb3IgX19hdHRyaWJ1dGVfXygocmV0dXJuc19ub25udWxsKSkKCkFsbG93cyBm b3IgbWFya2luZyBmdW5jdGlvbnMgdGhhdCBjYW4ndCBwb3NzaWJseSByZXR1cm4gTlVMTCwgbGlr ZSB0aG9zZQp0aGF0IGFsd2F5cyBlbG9nKEVSUk9SKSBmb3IgaW5zdGFuY2UgaW4gdGhlIGNhc2Ug b2YgZmFpbHVyZXMuCi0tLQogc3JjL2luY2x1ZGUvYy5oIHwgMTIgKysrKysrKysrKysrCiAxIGZp bGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Mu aCBiL3NyYy9pbmNsdWRlL2MuaAppbmRleCAyNmJmN2VjMTZlLi5lM2ExMjdmOTU0IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jLmgKKysrIGIvc3JjL2luY2x1ZGUvYy5oCkBAIC0yODUsNiArMjg1 LDE4IEBACiAjZGVmaW5lIHBnX3VucmVhY2hhYmxlKCkgYWJvcnQoKQogI2VuZGlmCiAKKy8qCisg KiBQbGFjZSBvbiBmdW5jdGlvbnMgd2hpY2ggcmV0dXJuIGEgcG9pbnRlciBidXQgY2FuJ3QgcmV0 dXJuIE5VTEwuIFdoZW4gdXNlZCwKKyAqIGl0IGNhbiBhbGxvdyB0aGUgY29tcGlsZXIgdG8gd2Fy biBpZiBhIE5VTEwgY2hlY2sgb2NjdXJzIGluIHRoZSBwYXJlbnQKKyAqIGZ1bmN0aW9uIGJlY2F1 c2UgdGhhdCBOVUxMIGNoZWNrIHdvdWxkIGFsd2F5cyBmYWlsLiBJdCBpcyBhbHNvIGFuIG9wcG9y dHVuaXR5CisgKiB0byBoZWxwIHRoZSBjb21waWxlciB3aXRoIG9wdGltaXphdGlvbnMuCisgKi8K KyNpZiBfX2hhc19hdHRyaWJ1dGUgKHJldHVybnNfbm9ubnVsbCkKKyNkZWZpbmUgcGdfcmV0dXJu c19ub25udWxsIF9fYXR0cmlidXRlX18oKHJldHVybnNfbm9ubnVsbCkpCisjZWxzZQorI2RlZmlu ZSBwZ19yZXR1cm5zX25vbm51bGwKKyNlbmRpZgorCiAvKgogICogSGludHMgdG8gdGhlIGNvbXBp bGVyIGFib3V0IHRoZSBsaWtlbGlob29kIG9mIGEgYnJhbmNoLiBCb3RoIGxpa2VseSgpIGFuZAog ICogdW5saWtlbHkoKSByZXR1cm4gdGhlIGJvb2xlYW4gdmFsdWUgb2YgdGhlIGNvbnRhaW5lZCBl eHByZXNzaW9uLgotLSAKVHJpc3RhbiBQYXJ0aW4KTmVvbiAoaHR0cHM6Ly9uZW9uLnRlY2gpCgo= --1a8676cad4b823d9fde66fa7dc22bf7add8b29d19bbda0f53fcdb2adf0dd--