aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/lib/edid.c35
-rw-r--r--src/lib/gamma-helper.c100
-rw-r--r--src/lib/libgamma-error.c.gpp27
-rw-r--r--src/lib/libgamma-error.h134
-rw-r--r--src/lib/libgamma-method.c8
5 files changed, 177 insertions, 127 deletions
diff --git a/src/lib/edid.c b/src/lib/edid.c
index 76867c7..800ebdd 100644
--- a/src/lib/edid.c
+++ b/src/lib/edid.c
@@ -35,45 +35,72 @@
int libgamma_parse_edid(libgamma_crtc_information_t* restrict this, int32_t fields)
{
#define __test_version(edid, major, minor) (((edid)[18] == major) && ((edid)[19] == minor))
+#define __m(value) (this->edid[index++] != value)
int error = 0;
int checksum = 0;
- size_t i;
+ size_t i, index = 0;
+ /* If the length of the EDID is not 128 bytes, we know that it is not of
+ EDID structure revision 1.3, and thus we do not support it. Additionally
+ this make sure we do not do segmentation violation on the next test. */
if (this->edid_length != 128)
error = LIBGAMMA_EDID_LENGTH_UNSUPPORTED;
- else if ((this->edid[0] != 0x00) || (this->edid[1] != 0xFF) || (this->edid[2] != 0xFF) || (this->edid[3] != 0xFF) ||
- (this->edid[4] != 0xFF) || (this->edid[5] != 0xFF) || (this->edid[6] != 0xFF) || (this->edid[7] != 0x00))
+ /* Check that the magic number of that of the EDID structure. */
+ else if (__m(0x00) || __m(0xFF) || __m(0xFF) || __m(0xFF) || __m(0xFF) || __m(0xFF) || __m(0xFF) || __m(0x00))
error = LIBGAMMA_EDID_WRONG_MAGIC_NUMBER;
+ /* Check that EDID structure revision 1.3 is used, it is the only version
+ we support. It is also by far the most commonly use revision and it is
+ currently the newest revision. */
else if (__test_version(this->edid, 1, 3) == 0)
error = LIBGAMMA_EDID_REVISION_UNSUPPORTED;
+ /* If we have encountered an error, report it for the fields that require
+ the EDID to be parsed. Note that it is not stored for the EDID field
+ itself because it is not considered an error just because we do not
+ support the used version. */
this->width_mm_edid_error = this->height_mm_edid_error = this->gamma_error = error;
+ /* Retrieve the size of the viewport. This is done even if it is not
+ requested because it is not worth it branch. */
this->width_mm_edid = (size_t)(this->edid[21]) * 10;
this->height_mm_edid = (size_t)(this->edid[22]) * 10;
+ /* Retrieve the monitor's gamma characteristics. */
if ((fields & LIBGAMMA_CRTC_INFO_GAMMA) && (error == 0))
{
if (this->edid[23] == 0xFF)
+ /* If the gamma charactistics is FFh (3,55) it should be interpreted as not specified. */
this->gamma_error = LIBGAMMA_GAMMA_NOT_SPECIFIED;
else
this->gamma_red = this->gamma_green = this->gamma_blue = (float)((int)(this->edid[23]) + 100) / 100.f;
}
+ /* If not error has occurred, calculate and test the checksum.
+ It is not considered an error that the gamma characteristics
+ is left unspecified in the EDID. */
if (error == 0)
for (i = 0; i < this->edid_length; i++)
checksum += (int)(this->edid[i]);
+ /* The checksum should be zero. */
if ((checksum & 255))
{
+ /* Store the error in all fields that require the EDID to be parsed,
+ as well as the EDID field itself. */
error = LIBGAMMA_EDID_CHECKSUM_ERROR;
this->edid_error = this->width_mm_edid_error = this->height_mm_edid_error = error;
+ /* If the gamma characteristics is not specified, that is kept,
+ and the checksum error is augmented. */
this->gamma_error = this->gamma_error == LIBGAMMA_GAMMA_NOT_SPECIFIED
- ? LIBGAMMA_GAMMA_NOT_SPECIFIED_AND_EDID_CHECKSUM_ERROR : 0;
+ ? LIBGAMMA_GAMMA_NOT_SPECIFIED_AND_EDID_CHECKSUM_ERROR : error;
}
+ /* Return whether or not we encountered an error or if
+ the gamma characteristics was requested but is not
+ specified in the monitor's EDID. */
return error | this->gamma_error;
+#undef __m
#undef __test_version
}
diff --git a/src/lib/gamma-helper.c b/src/lib/gamma-helper.c
index dd4e027..5e3c09b 100644
--- a/src/lib/gamma-helper.c
+++ b/src/lib/gamma-helper.c
@@ -25,9 +25,15 @@
#include <stdint.h>
+/**
+ * Just an arbitrary version
+ */
#define ANY bits64
+#define __translate(instruction) for (i = 0; i < n; i++) instruction; break
+
+
/**
* Convert any set of gamma ramps into a 64-bit integer array with all channels.
*
@@ -41,32 +47,16 @@ static void translate_to_64(signed depth, size_t n, uint64_t* restrict out, libg
size_t i;
switch (depth)
{
- case 16:
- for (i = 0; i < n; i++)
- out[i] = (uint64_t)(in.bits16.red[i]) * 0x0001000100010001ULL;
- break;
-
- case 32:
- for (i = 0; i < n; i++)
- out[i] = (uint64_t)(in.bits32.red[i]) * 0x0000000100000001ULL;
- break;
-
- case 64:
- for (i = 0; i < n; i++)
- out[i] = in.bits64.red[i];
- break;
-
- case -1:
- for (i = 0; i < n; i++)
- out[i] = (uint64_t)(in.float_single.red[i] * (float)UINT64_MAX);
- break;
-
- case -2:
- for (i = 0; i < n; i++)
- out[i] = (uint64_t)(in.float_double.red[i] * (double)UINT64_MAX);
- break;
-
- default: /* This is not possible. */
+ /* Translate integer. */
+ case 16: __translate(out[i] = (uint64_t)(in.bits16.red[i]) * 0x0001000100010001ULL);
+ case 32: __translate(out[i] = (uint64_t)(in.bits32.red[i]) * 0x0000000100000001ULL);
+ /* Identity translation. */
+ case 64: __translate(out[i] = in.bits64.red[i]);
+ /* Translate floating point. */
+ case -1: __translate(out[i] = (uint64_t)(in.float_single.red[i] * (float)UINT64_MAX));
+ case -2: __translate(out[i] = (uint64_t)(in.float_double.red[i] * (double)UINT64_MAX));
+ default:
+ /* This is not possible. */
abort();
break;
}
@@ -84,35 +74,18 @@ static void translate_to_64(signed depth, size_t n, uint64_t* restrict out, libg
static void translate_from_64(signed depth, size_t n, libgamma_gamma_ramps_any_t out, uint64_t* restrict in)
{
size_t i;
-
switch (depth)
{
- case 16:
- for (i = 0; i < n; i++)
- out.bits16.red[i] = (uint16_t)(in[i] / 0x0001000100010001ULL);
- break;
-
- case 32:
- for (i = 0; i < n; i++)
- out.bits32.red[i] = (uint32_t)(in[i] / 0x0000000100000001ULL);
- break;
-
- case 64:
- for (i = 0; i < n; i++)
- out.bits64.red[i] = in[i];
- break;
-
- case -1:
- for (i = 0; i < n; i++)
- out.float_single.red[i] = (float)(in[i]) / (float)UINT64_MAX;
- break;
-
- case -2:
- for (i = 0; i < n; i++)
- out.float_double.red[i] = (double)(in[i]) / (double)UINT64_MAX;
- break;
-
- default: /* This is not possible. */
+ /* Translate integer. */
+ case 16: __translate(out.bits16.red[i] = (uint16_t)(in[i] / 0x0001000100010001ULL));
+ case 32: __translate(out.bits32.red[i] = (uint32_t)(in[i] / 0x0000000100000001ULL));
+ /* Identity translation. */
+ case 64: __translate(out.bits64.red[i] = in[i]);
+ /* Translate floating point. */
+ case -1: __translate(out.float_single.red[i] = (float)(in[i]) / (float)UINT64_MAX);
+ case -2: __translate(out.float_double.red[i] = (double)(in[i]) / (double)UINT64_MAX);
+ default:
+ /* This is not possible. */
abort();
break;
}
@@ -133,8 +106,7 @@ static void translate_from_64(signed depth, size_t n, libgamma_gamma_ramps_any_t
static int allocated_any_ramp(libgamma_gamma_ramps_any_t* restrict ramps_sys,
libgamma_gamma_ramps_any_t ramps, signed depth, size_t* restrict elements)
{
- size_t n = 0;
- size_t d;
+ size_t n = 0, d;
switch (depth)
{
@@ -156,7 +128,7 @@ static int allocated_any_ramp(libgamma_gamma_ramps_any_t* restrict ramps_sys,
ramps_sys->ANY.blue = (void*)(((char*)(ramps_sys->ANY.green)) + ramps.ANY.green_size * d / sizeof(char));
*elements = n;
- return ramps_sys->ANY.red ? 0 : LIBGAMMA_ERRNO_SET;
+ return ramps_sys->ANY.red == NULL ? LIBGAMMA_ERRNO_SET : 0;
}
@@ -189,16 +161,10 @@ int libgamma_translated_ramp_get_(libgamma_crtc_state_t* restrict this,
return r;
if ((r = fun(this, &ramps_sys)))
- {
- free(ramps_sys.ANY.red);
- return r;
- }
+ return free(ramps_sys.ANY.red), r;
if ((ramps_full = malloc(n * sizeof(uint64_t))) == NULL)
- {
- free(ramps_sys.ANY.red);
- return LIBGAMMA_ERRNO_SET;
- }
+ return free(ramps_sys.ANY.red), LIBGAMMA_ERRNO_SET;
translate_to_64(depth_system, n, ramps_full, ramps_sys);
free(ramps_sys.ANY.red);
@@ -238,10 +204,7 @@ int libgamma_translated_ramp_set_(libgamma_crtc_state_t* restrict this,
return r;
if ((ramps_full = malloc(n * sizeof(uint64_t))) == NULL)
- {
- free(ramps_sys.ANY.red);
- return LIBGAMMA_ERRNO_SET;
- }
+ return free(ramps_sys.ANY.red), LIBGAMMA_ERRNO_SET;
translate_to_64(depth_user, n, ramps_full, ramps);
translate_from_64(depth_system, n, ramps_sys, ramps_full);
@@ -254,5 +217,6 @@ int libgamma_translated_ramp_set_(libgamma_crtc_state_t* restrict this,
}
+#undef __translate
#undef ANY
diff --git a/src/lib/libgamma-error.c.gpp b/src/lib/libgamma-error.c.gpp
index d443f74..64f1904 100644
--- a/src/lib/libgamma-error.c.gpp
+++ b/src/lib/libgamma-error.c.gpp
@@ -34,13 +34,16 @@
/**
- * Group that the user needs to be a member of if `LIBGAMMA_DEVICE_REQUIRE_GROUP` is returned.
+ * Group that the user needs to be a member of if
+ * `LIBGAMMA_DEVICE_REQUIRE_GROUP` is returned.
*/
gid_t libgamma_group_gid = 0;
/**
- * Group that the user needs to be a member of if `LIBGAMMA_DEVICE_REQUIRE_GROUP` is returned,
- * `NULL` if the name of the group `libgamma_group_gid` cannot be determined.
+ * Group that the user needs to be a member of if
+ * `LIBGAMMA_DEVICE_REQUIRE_GROUP` is returned,
+ * `NULL` if the name of the group `libgamma_group_gid`
+ * cannot be determined.
*/
const char* libgamma_group_name = NULL;
@@ -67,23 +70,30 @@ void libgamma_perror(const char* name, int error_code)
{
if (error_code >= 0)
{
+ /* Print the stored errno value. */
errno = error_code;
perror(name);
}
else if (error_code == LIBGAMMA_ERRNO_SET)
+ /* Print errno. */
perror(name);
else if (error_code == LIBGAMMA_DEVICE_REQUIRE_GROUP)
{
+ /* Print the error name and the required group membership. */
const char* error = libgamma_name_of_error(error_code);
long int gid = (long int)libgamma_group_gid;
if (libgamma_group_name == NULL)
+ /* Group name unknown. */
fprintf(stderr, "%s: %s: %ld\n", name, error, gid);
else
- fprintf(stderr, "%s: %s: %s (%lid)\n", name, error, libgamma_group_name, gid);
+ /* Group name known, ID is second class. */
+ fprintf(stderr, "%s: %s: %s (%ld)\n", name, error, libgamma_group_name, gid);
}
else if (error_code < LIBGAMMA_ERROR_MIN)
+ /* If the error code does not exist, print "(?)" */
fprintf(stderr, "%s: (?)\n", name);
else
+ /* Print the name of the error. */
fprintf(stderr, "%s: %s\n", name, libgamma_name_of_error(error_code));
}
@@ -98,6 +108,9 @@ void libgamma_perror(const char* name, int error_code)
*/
const char* libgamma_name_of_error(int value)
{
+ /* Map from error codes to error names.
+ The output of $(libgamma-error-extract --list)
+ is sorted by error code in decreasing order. */
static const char* error_names[] =
{
£>for error in $(libgamma-error-extract --list); do
@@ -105,9 +118,12 @@ const char* libgamma_name_of_error(int value)
£>done
};
+ /* Return `NULL` if the error code is invalid. */
if ((value < LIBGAMMA_ERROR_MIN) || (value >= 0))
return NULL;
+ /* Convert error code from {-1, -2, -3, ...} to {0, 1, 2, ...}
+ and look up the error's name and return it. */
return error_names[-value - 1];
}
@@ -121,13 +137,16 @@ const char* libgamma_name_of_error(int value)
*/
int libgamma_value_of_error(const char* name)
{
+ /* Return 0 (not a valid error code) if the error name is `NULL`. */
if (name == NULL)
return 0;
+ /* Test error names against `name` and return the value of the match error. */
£>for error in $(libgamma-error-extract --list); do
if (!strcmp(name, "£{error}")) return £{error};
£>done
+ /* Return 0 (not a valid error code) if the error name is unknown. */
return 0;
}
diff --git a/src/lib/libgamma-error.h b/src/lib/libgamma-error.h
index 06a7077..8431877 100644
--- a/src/lib/libgamma-error.h
+++ b/src/lib/libgamma-error.h
@@ -26,13 +26,16 @@
/**
- * Group that the user needs to be a member of if `LIBGAMMA_DEVICE_REQUIRE_GROUP` is returned.
+ * Group that the user needs to be a member of if
+ * `LIBGAMMA_DEVICE_REQUIRE_GROUP` is returned.
*/
extern gid_t libgamma_group_gid;
/**
- * Group that the user needs to be a member of if `LIBGAMMA_DEVICE_REQUIRE_GROUP` is returned,
- * `NULL` if the name of the group `libgamma_group_gid` cannot be determined.
+ * Group that the user needs to be a member of if
+ * `LIBGAMMA_DEVICE_REQUIRE_GROUP` is returned,
+ * `NULL` if the name of the group `libgamma_group_gid`
+ * cannot be determined.
*/
extern const char* libgamma_group_name;
@@ -65,80 +68,95 @@ extern const char* libgamma_group_name;
#define LIBGAMMA_NO_SUCH_CRTC (-5)
/**
- * Counter overflowed when counting the number of available items.
+ * Counter overflowed when counting the number
+ * of available items.
*/
#define LIBGAMMA_IMPOSSIBLE_AMOUNT (-6)
/**
- * The selected connector is disabled, it does not have a CRTC.
+ * The selected connector is disabled, it does
+ * not have a CRTC.
*/
#define LIBGAMMA_CONNECTOR_DISABLED (-7)
/**
- * The selected CRTC could not be opened, reason unknown.
+ * The selected CRTC could not be opened,
+ * reason unknown.
*/
#define LIBGAMMA_OPEN_CRTC_FAILED (-8)
/**
- * The CRTC information field is not supported by the adjustment method.
+ * The CRTC information field is not supported
+ * by the adjustment method.
*/
#define LIBGAMMA_CRTC_INFO_NOT_SUPPORTED (-9)
/**
- * Failed to read the current gamma ramps for the selected CRTC, reason unknown.
+ * Failed to read the current gamma ramps for
+ * the selected CRTC, reason unknown.
*/
#define LIBGAMMA_GAMMA_RAMP_READ_FAILED (-10)
/**
- * Failed to write the current gamma ramps for the selected CRTC, reason unknown.
+ * Failed to write the current gamma ramps for
+ * the selected CRTC, reason unknown.
*/
#define LIBGAMMA_GAMMA_RAMP_WRITE_FAILED (-11)
/**
- * The specified ramp sizes does not match the ramps sizes returned by the
- * adjustment methods in response to the query/command.
+ * The specified ramp sizes does not match the
+ * ramps sizes returned by the adjustment methods
+ * in response to the query/command.
*/
#define LIBGAMMA_GAMMA_RAMP_SIZE_CHANGED (-12)
/**
- * The specified ramp sizes are not identical which is required by the adjustment method.
+ * The specified ramp sizes are not identical
+ * which is required by the adjustment method.
* (Only returned in debug mode.)
*/
#define LIBGAMMA_MIXED_GAMMA_RAMP_SIZE (-13)
/**
- * The specified ramp sizes are not supported by the adjustment method.
+ * The specified ramp sizes are not supported
+ * by the adjustment method.
* (Only returned in debug mode.)
*/
#define LIBGAMMA_WRONG_GAMMA_RAMP_SIZE (-14)
/**
- * The adjustment method reported that the gamma ramps size is 1, or perhaps even zero or negative.
+ * The adjustment method reported that the gamma
+ * ramps size is 1, or perhaps even zero or negative.
*/
#define LIBGAMMA_SINGLETON_GAMMA_RAMP (-15)
/**
- * The adjustment method failed to list available CRTC:s, reason unknown.
+ * The adjustment method failed to list
+ * available CRTC:s, reason unknown.
*/
#define LIBGAMMA_LIST_CRTCS_FAILED (-16)
/**
- * Failed to acquire mode resources from the adjustment method.
+ * Failed to acquire mode resources from the
+ * adjustment method.
*/
#define LIBGAMMA_ACQUIRING_MODE_RESOURCES_FAILED (-17)
/**
- * The adjustment method reported that a negative number of partitions exists in the site.
+ * The adjustment method reported that a negative
+ * number of partitions exists in the site.
*/
#define LIBGAMMA_NEGATIVE_PARTITION_COUNT (-18)
/**
- * The adjustment method reported that a negative number of CRTC:s exists in the partition.
+ * The adjustment method reported that a negative
+ * number of CRTC:s exists in the partition.
*/
#define LIBGAMMA_NEGATIVE_CRTC_COUNT (-19)
/**
- * Device cannot be access becauses of insufficient permissions.
+ * Device cannot be access becauses of
+ * insufficient permissions.
*/
#define LIBGAMMA_DEVICE_RESTRICTED (-20)
@@ -148,9 +166,10 @@ extern const char* libgamma_group_name;
#define LIBGAMMA_DEVICE_ACCESS_FAILED (-21)
/**
- * Device cannot be access, membership of the `libgamma_group_gid`
- * (named by `libgamma_group_name` (can be `NULL`, if so `errno` may
- * have been set to tell why)) is required.
+ * Device cannot be access, membership of the
+ * `libgamma_group_gid` (named by `libgamma_group_name`
+ * (can be `NULL`, if so `errno` may have been set
+ * to tell why)) is required.
*/
#define LIBGAMMA_DEVICE_REQUIRE_GROUP (-22)
@@ -165,95 +184,112 @@ extern const char* libgamma_group_name;
#define LIBGAMMA_STATE_UNKNOWN (-24)
/**
- * Failed to determine which connector the CRTC belongs to.
+ * Failed to determine which connector the
+ * CRTC belongs to.
*/
#define LIBGAMMA_CONNECTOR_UNKNOWN (-25)
/**
- * The detected connector type is not listed in this library and has to be updated.
+ * The detected connector type is not listed
+ * in this library and has to be updated.
*/
#define LIBGAMMA_CONNECTOR_TYPE_NOT_RECOGNISED (-26)
/**
- * The detected subpixel order is not listed in this library and has to be updated.
+ * The detected subpixel order is not listed
+ * in this library and has to be updated.
*/
#define LIBGAMMA_SUBPIXEL_ORDER_NOT_RECOGNISED (-27)
/**
- * The length of the EDID does not match that of any supported EDID structure revision.
+ * The length of the EDID does not match that
+ * of any supported EDID structure revision.
*/
#define LIBGAMMA_EDID_LENGTH_UNSUPPORTED (-28)
/**
- * The magic number in the EDID does not match that of any supported EDID structure revision.
+ * The magic number in the EDID does not match
+ * that of any supported EDID structure revision.
*/
#define LIBGAMMA_EDID_WRONG_MAGIC_NUMBER (-29)
/**
- * The EDID structure revision used by the monitor is not supported.
+ * The EDID structure revision used by the
+ * monitor is not supported.
*/
#define LIBGAMMA_EDID_REVISION_UNSUPPORTED (-30)
/**
- * The gamma characteristics field in the EDID is left unspecified.
+ * The gamma characteristics field in the EDID
+ * is left unspecified.
* (This could be considered a non-error.)
*/
#define LIBGAMMA_GAMMA_NOT_SPECIFIED (-31)
/**
- * The checksum in the EDID is incorrect, all request information has been provided
+ * The checksum in the EDID is incorrect, all
+ * request information has been provided
* by you cannot count on it.
*/
#define LIBGAMMA_EDID_CHECKSUM_ERROR (-32)
/**
- * Both of the errors `LIBGAMMA_GAMMA_NOT_SPECIFIED` and
- * `LIBGAMMA_EDID_CHECKSUM_ERROR` have occurred.
+ * Both of the errors `LIBGAMMA_GAMMA_NOT_SPECIFIED`
+ * and `LIBGAMMA_EDID_CHECKSUM_ERROR` have occurred.
*/
#define LIBGAMMA_GAMMA_NOT_SPECIFIED_AND_EDID_CHECKSUM_ERROR (-33)
/**
- * Failed to query the gamma ramps size from the adjustment method, reason unknown.
+ * Failed to query the gamma ramps size from the
+ * adjustment method, reason unknown.
*/
#define LIBGAMMA_GAMMA_RAMPS_SIZE_QUERY_FAILED (-34)
/**
- * The selected partition could not be opened, reason unknown.
+ * The selected partition could not be opened,
+ * reason unknown.
*/
#define LIBGAMMA_OPEN_PARTITION_FAILED (-35)
/**
- * The selected site could not be opened, reason unknown.
+ * The selected site could not be opened,
+ * reason unknown.
*/
#define LIBGAMMA_OPEN_SITE_FAILED (-36)
/**
- * Failed to query the adjustment method for its protocol version, reason unknown.
+ * Failed to query the adjustment method for
+ * its protocol version, reason unknown.
*/
#define LIBGAMMA_PROTOCOL_VERSION_QUERY_FAILED (-37)
/**
- * The adjustment method's version of its protocol is not supported.
+ * The adjustment method's version of its
+ * protocol is not supported.
*/
#define LIBGAMMA_PROTOCOL_VERSION_NOT_SUPPORTED (-38)
/**
- * The adjustment method failed to list available partitions, reason unknown.
+ * The adjustment method failed to list
+ * available partitions, reason unknown.
*/
#define LIBGAMMA_LIST_PARTITIONS_FAILED (-39)
/**
- * Partition exists by index, but the partition at that index does not exist.
+ * Partition exists by index, but the partition
+ * at that index does not exist.
*/
#define LIBGAMMA_NULL_PARTITION (-40)
/**
- * There is not monitor connected to the connector of the selected CRTC.
+ * There is not monitor connected to the
+ * connector of the selected CRTC.
*/
#define LIBGAMMA_NOT_CONNECTED (-41)
/**
- * Data extraction from a reply from the adjustment method failed, reason unknown.
+ * Data extraction from a reply from the
+ * adjustment method failed, reason unknown.
*/
#define LIBGAMMA_REPLY_VALUE_EXTRACTION_FAILED (-42)
@@ -263,26 +299,30 @@ extern const char* libgamma_group_name;
#define LIBGAMMA_EDID_NOT_FOUND (-43)
/**
- * Failed to list properties on the output, reason unknown.
+ * Failed to list properties on the output,
+ * reason unknown.
*/
#define LIBGAMMA_LIST_PROPERTIES_FAILED (-44)
/**
- * Failed to query a property's value from the output, reason unknown.
+ * Failed to query a property's value from
+ * the output, reason unknown.
*/
#define LIBGAMMA_PROPERTY_VALUE_QUERY_FAILED (-45)
/**
- * A request for information on an output failed, reason unknown.
+ * A request for information on an output
+ * failed, reason unknown.
*/
#define LIBGAMMA_OUTPUT_INFORMATION_QUERY_FAILED (-46)
/**
- * The number of the libgamma error with the lowest number.
- * If this is lower than the number your program thinks it
- * should be sould update your program for new errors.
+ * The number of the libgamma error with the
+ * lowest number. If this is lower than the
+ * number your program thinks it should be sould
+ * update your program for new errors.
*/
#define LIBGAMMA_ERROR_MIN (-46)
diff --git a/src/lib/libgamma-method.c b/src/lib/libgamma-method.c
index 4c81549..f9fa7a3 100644
--- a/src/lib/libgamma-method.c
+++ b/src/lib/libgamma-method.c
@@ -40,7 +40,7 @@ int libgamma_gamma_ramps_initialise(libgamma_gamma_ramps_t* restrict this)
this->red = malloc(n * sizeof(uint16_t));
this->green = this-> red + this-> red_size;
this->blue = this->green + this->green_size;
- return this->red ? 0 : -1;
+ return this->red == NULL ? -1 : 0;
}
@@ -89,7 +89,7 @@ int libgamma_gamma_ramps32_initialise(libgamma_gamma_ramps32_t* restrict this)
this->red = malloc(n * sizeof(uint32_t));
this->green = this-> red + this-> red_size;
this->blue = this->green + this->green_size;
- return this->red ? 0 : -1;
+ return this->red == NULL ? -1 : 0;
}
@@ -138,7 +138,7 @@ int libgamma_gamma_ramps64_initialise(libgamma_gamma_ramps64_t* restrict this)
this->red = malloc(n * sizeof(uint64_t));
this->green = this-> red + this-> red_size;
this->blue = this->green + this->green_size;
- return this->red ? 0 : -1;
+ return this->red == NULL ? -1 : 0;
}
@@ -187,7 +187,7 @@ int libgamma_gamma_rampsf_initialise(libgamma_gamma_rampsf_t* restrict this)
this->red = malloc(n * sizeof(float));
this->green = this-> red + this-> red_size;
this->blue = this->green + this->green_size;
- return this->red ? 0 : -1;
+ return this->red == NULL ? -1 : 0;
}