projects
/
babeltrace.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add array
[babeltrace.git]
/
types
/
float.c
diff --git
a/types/float.c
b/types/float.c
index 2f40d930b6d87c119da1c95fe350439ed2adfc5b..56ca402c2b4a9a9f4f84f80c26a4a0fa18b8848a 100644
(file)
--- a/
types/float.c
+++ b/
types/float.c
@@
-29,17
+29,20
@@
void float_copy(struct stream_pos *dest, const struct format *fdest,
container_of(type_class, struct type_class_float, p);
if (fsrc->float_copy == fdest->float_copy) {
container_of(type_class, struct type_class_float, p);
if (fsrc->float_copy == fdest->float_copy) {
- fsrc->float_copy(dest,
float_class,
src, float_class);
+ fsrc->float_copy(dest, src, float_class);
} else {
double v;
} else {
double v;
- v = fsrc->double_read(src, f
src
);
- fdest->double_write(dest, f
dest
, v);
+ v = fsrc->double_read(src, f
loat_class
);
+ fdest->double_write(dest, f
loat_class
, v);
}
}
void float_type_free(struct type_class_float *float_class)
{
}
}
void float_type_free(struct type_class_float *float_class)
{
+ integer_type_free(float_class->exp);
+ integer_type_free(float_class->mantissa);
+ integer_type_free(float_class->sign);
g_free(float_class);
}
g_free(float_class);
}
@@
-56,7
+59,6
@@
struct type_class_float *float_type_new(const char *name,
size_t alignment)
{
struct type_class_float *float_class;
size_t alignment)
{
struct type_class_float *float_class;
- struct type_class_bitfield *bitfield_class;
struct type_class_integer *int_class;
struct type_class *type_class;
int ret;
struct type_class_integer *int_class;
struct type_class *type_class;
int ret;
@@
-70,12
+72,16
@@
struct type_class_float *float_type_new(const char *name,
type_class->free = _float_type_free;
float_class->byte_order = byte_order;
type_class->free = _float_type_free;
float_class->byte_order = byte_order;
- float_class->mantissa = bitfield_type_new(NULL, mantissa_len,
- byte_order, false, 1);
+ float_class->sign = integer_type_new(NULL, 1,
+ byte_order, false, 1);
+ if (!float_class->mantissa)
+ goto error_sign;
+ float_class->mantissa = integer_type_new(NULL, mantissa_len - 1,
+ byte_order, false, 1);
if (!float_class->mantissa)
goto error_mantissa;
if (!float_class->mantissa)
goto error_mantissa;
- float_class->exp =
bitfield
_type_new(NULL, exp_len,
-
byte_order, true, 1);
+ float_class->exp =
integer
_type_new(NULL, exp_len,
+ byte_order, true, 1);
if (!float_class->exp)
goto error_exp;
if (!float_class->exp)
goto error_exp;
@@
-87,10
+93,12
@@
struct type_class_float *float_type_new(const char *name,
return float_class;
error_register:
return float_class;
error_register:
-
bitfield
_type_free(float_class->exp);
+
integer
_type_free(float_class->exp);
error_exp:
error_exp:
-
bitfield
_type_free(float_class->mantissa);
+
integer
_type_free(float_class->mantissa);
error_mantissa:
error_mantissa:
+ integer_type_free(float_class->sign);
+error_sign:
g_free(float_class);
return NULL;
}
g_free(float_class);
return NULL;
}
This page took
0.023643 seconds
and
4
git commands to generate.