Skip to content

Commit 7ec4209

Browse files
committed
swoole_table warning free.
1 parent e803f88 commit 7ec4209

File tree

3 files changed

+24
-16
lines changed

3 files changed

+24
-16
lines changed

examples/table/set.php

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,16 @@ function child1($worker)
2121
//master
2222
sleep(1);
2323
$s = microtime(true);
24-
for($i =0; $i < 1000; $i++)
25-
{
26-
$arr = $table->get('[email protected]');
27-
}
24+
//for($i =0; $i < 1000; $i++)
25+
//{
26+
// $arr = $table->get('[email protected]');
27+
// var_dump($arr);
28+
//}
29+
30+
var_dump($table->get('[email protected]'));
31+
var_dump($table->get('[email protected]'));
32+
var_dump($table->get('[email protected]'));
33+
2834
echo "use: ".((microtime(true) - $s) * 1000)."ms\n";
2935
//var_dump($table->get('[email protected]'));
3036
sleep(100000);

include/table.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -142,16 +142,16 @@ static sw_inline void swTableRow_set_value(swTableRow *row, swTableColumn * col,
142142
switch(col->type)
143143
{
144144
case SW_TABLE_INT8:
145-
*(int8_t *)(row->data + col->index) = *(int8_t*) value;
145+
memcpy(row->data + col->index, value, 1);
146146
break;
147147
case SW_TABLE_INT16:
148-
*(int16_t *)(row->data + col->index) = *(int16_t*) value;
148+
memcpy(row->data + col->index, value, 2);
149149
break;
150150
case SW_TABLE_INT32:
151-
*(int32_t *)(row->data + col->index) = *(int32_t*) value;
151+
memcpy(row->data + col->index, value, 4);
152152
break;
153153
case SW_TABLE_INT64:
154-
*(int64_t *)(row->data + col->index) = *(int64_t*) value;
154+
memcpy(row->data + col->index, value, 8);
155155
break;
156156
case SW_TABLE_FLOAT:
157157
memcpy(row->data + col->index, value, sizeof(double));
@@ -162,7 +162,7 @@ static sw_inline void swTableRow_set_value(swTableRow *row, swTableColumn * col,
162162
swWarn("string is too long.");
163163
vlen = col->size - sizeof(swTable_string_length_t);
164164
}
165-
*(swTable_string_length_t *)(row->data + col->index) = vlen;
165+
memcpy(row->data + col->index, &vlen, sizeof(swTable_string_length_t));
166166
memcpy(row->data + col->index + sizeof(swTable_string_length_t), value, vlen);
167167
break;
168168
}

swoole_table.c

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,9 @@ static void php_swoole_table_row2array(swTable *table, swTableRow *row, zval *re
8787
array_init(return_value);
8888

8989
swTableColumn *col = NULL;
90+
swTable_string_length_t vlen = 0;
91+
double dval = 0;
92+
int64_t lval = 0;
9093
char *k;
9194

9295
sw_spinlock(&row->lock);
@@ -99,30 +102,29 @@ static void php_swoole_table_row2array(swTable *table, swTableRow *row, zval *re
99102
}
100103
if (col->type == SW_TABLE_STRING)
101104
{
102-
swTable_string_length_t vlen = *(swTable_string_length_t *) (row->data + col->index);
105+
memcpy(&vlen, row->data + col->index, sizeof(swTable_string_length_t));
103106
add_assoc_stringl_ex(return_value, col->name->str, col->name->length + 1, row->data + col->index + sizeof(swTable_string_length_t), vlen, 1);
104107
}
105108
else if (col->type == SW_TABLE_FLOAT)
106109
{
107-
double dval = *(double *) (row->data + col->index);
110+
memcpy(&dval, row->data + col->index, sizeof(dval));
108111
add_assoc_double_ex(return_value, col->name->str, col->name->length + 1, dval);
109112
}
110113
else
111114
{
112-
int64_t lval;
113115
switch (col->type)
114116
{
115117
case SW_TABLE_INT8:
116-
lval = *(int8_t *) (row->data + col->index);
118+
memcpy(&lval, row->data + col->index, 1);
117119
break;
118120
case SW_TABLE_INT16:
119-
lval = *(int16_t *) (row->data + col->index);
121+
memcpy(&lval, row->data + col->index, 2);
120122
break;
121123
case SW_TABLE_INT32:
122-
lval = *(int32_t *) (row->data + col->index);
124+
memcpy(&lval, row->data + col->index, 4);
123125
break;
124126
default:
125-
lval = *(int64_t *) (row->data + col->index);
127+
memcpy(&lval, row->data + col->index, 8);
126128
break;
127129
}
128130
add_assoc_long_ex(return_value, col->name->str, col->name->length + 1, lval);

0 commit comments

Comments
 (0)