We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
たびたびすみません。 次のコードで segmentation fault になります。 grn_obj_get_value のところなのですが、 続けて2回実行すると grn_obj_set_value でも segmentation fault になります。 上書きする場合にもどこかにバグがありそうです。 zlib を使わない場合は問題ないです。
私が直せれば良いのですが、ぜんぜんコードを追えていないので、 修正をお願いします。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <groonga.h> int main(int argc, char **argv) { unsigned key_size = 8; grn_ctx ctx; grn_obj *db, *table, *column, *key_type, *value_type; grn_id id; grn_obj buf; grn_rc rc; int added; grn_obj value, bulk; const char *path = "db"; if (grn_init()) { fprintf(stderr, "grn_init() failed\n"); return -1; } if (grn_ctx_init(&ctx, 0)) { fprintf(stderr, "grn_ctx_init() failed\n"); return -1; } db = grn_db_open(&ctx, path); if (!db) { db = grn_db_create(&ctx, path, NULL); } if (!db) { fprintf(stderr, "db initialize failed\n"); return -1; } key_type = grn_ctx_at(&ctx, GRN_DB_SHORT_TEXT); GRN_TABLE_OPEN_OR_CREATE(&ctx, "t1", 2, NULL, GRN_OBJ_TABLE_HASH_KEY|GRN_OBJ_PERSISTENT, key_type, NULL, table); value_type = grn_ctx_at(&ctx, GRN_DB_TEXT); GRN_COLUMN_OPEN_OR_CREATE(&ctx, table, "c1", 2, NULL, GRN_OBJ_PERSISTENT|GRN_OBJ_COMPRESS_ZLIB, /* GRN_OBJ_PERSISTENT, */ value_type, column); id = grn_table_add(&ctx, table, "hello", 5, &added); printf("id=%d, added=%d\n", id, added); GRN_TEXT_INIT(&value, 0); GRN_TEXT_PUT(&ctx, &value, "world", 5); rc = grn_obj_set_value(&ctx, column, id, &value, GRN_OBJ_SET); printf("grn_obj_set_value: rc=%d\n", rc); GRN_TEXT_INIT(&bulk, 0); GRN_BULK_REWIND(&bulk); grn_obj_get_value(&ctx, column, id, &bulk); printf("%s\n", GRN_BULK_HEAD(&bulk)); grn_obj_close(&ctx, &bulk); if (grn_obj_close(&ctx, db)) { fprintf(stderr, "grn_obj_close() failed\n"); return -1; } if (grn_ctx_fin(&ctx)) { fprintf(stderr, "grn_ctx_fin() failed\n"); return -1; } if (grn_fin()) { fprintf(stderr, "grn_fin() failed\n"); return -1; } return 0; }
The text was updated successfully, but these errors were encountered:
すみません。。。再現しませんでした。。。 年のため、実行方法と実行結果を貼ってもらえないでしょうか?
Sorry, something went wrong.
すみません!zlibが有効になっていない状態で試していました! zlibが有効な場合はちゃんと(?)SEGVしたので、調べてみます!
一応、動くようにはしたのですがメモリリークします。。。 抜本的にAPIを考え直さないといけなそうなのですぐには直らなそうです。すみません。。。
とりあえず、SEGVはしなくなったのでこれはcloseします。
しばらくは zlib なしで使います。 修正ありがとうございました。
すみません。。。
No branches or pull requests
たびたびすみません。
次のコードで segmentation fault になります。
grn_obj_get_value のところなのですが、
続けて2回実行すると grn_obj_set_value でも segmentation fault になります。
上書きする場合にもどこかにバグがありそうです。
zlib を使わない場合は問題ないです。
私が直せれば良いのですが、ぜんぜんコードを追えていないので、
修正をお願いします。
The text was updated successfully, but these errors were encountered: