• R/O
  • SSH
  • HTTPS

npl: コミット


コミットメタ情報

リビジョン66 (tree)
日時2017-09-11 22:39:12
作者tamiya25

ログメッセージ

修正

変更サマリ

差分

--- trunk/npl/stack.c (revision 65)
+++ trunk/npl/stack.c (revision 66)
@@ -156,7 +156,7 @@
156156
157157 assert(s);
158158
159- npl_stack_clean(s);
159+ npl_stack_empty(s);
160160
161161 // sfi を取り出す
162162 if (s->stack == NULL)
@@ -170,10 +170,20 @@
170170 return 0;
171171 }
172172
173-void npl_stack_clean(npl_stack_t *s)
173+int npl_stack_is_empty(npl_stack_t *s)
174174 {
175175 assert(s);
176176
177+ if (s->count > 0)
178+ return 1; // 空ではない
179+
180+ return 0;
181+}
182+
183+void npl_stack_empty(npl_stack_t *s)
184+{
185+ assert(s);
186+
177187 if (s->_cleaner != NULL)
178188 s->_cleaner(s);
179189 _delete_sblock(s);
@@ -298,7 +308,7 @@
298308 return 0;
299309 }
300310
301-int npl_stack_pop_obj(npl_stack_t *s, npl_object_t **obj_r)
311+int npl_stack_pop_obj(npl_stack_t *s, void *obj_r)
302312 {
303313 assert(s);
304314 assert(obj_r);
--- trunk/npl/npl.h (revision 65)
+++ trunk/npl/npl.h (revision 66)
@@ -474,7 +474,8 @@
474474 npl_stack_t* npl_stack_new(void);
475475 size_t npl_stack_count(npl_stack_t *s);
476476 int npl_stack_leave(npl_stack_t *s);
477-void npl_stack_clean(npl_stack_t *s);
477+int npl_stack_is_empty(npl_stack_t *s);
478+void npl_stack_empty(npl_stack_t *s);
478479
479480 int npl_stack_enter(npl_stack_t *s);
480481 int npl_stack_push(npl_stack_t *s, size_t bytes, void *p);
@@ -484,7 +485,7 @@
484485
485486 int npl_stack_enter_obj(npl_stack_t *s);
486487 int npl_stack_push_obj(npl_stack_t *s, npl_object_t *obj);
487-int npl_stack_pop_obj(npl_stack_t *s, npl_object_t **obj_r);
488+int npl_stack_pop_obj(npl_stack_t *s, void *obj_r);
488489
489490 int npl_stack_enter_val(npl_stack_t *s);
490491 int npl_stack_push_val(npl_stack_t *s, npl_val_t *val);
--- trunk/npl/test/stack/calc.c (revision 65)
+++ trunk/npl/test/stack/calc.c (revision 66)
@@ -254,7 +254,7 @@
254254 }
255255 }
256256
257- npl_stack_clean(s);
257+ npl_stack_empty(s);
258258 pop_code_all(t, s);
259259 npl_object_unref(NPL_OBJECT(t));
260260
@@ -455,7 +455,7 @@
455455 if (npl_stream_read(in, sbuf))
456456 break;
457457
458- npl_stack_clean(s);
458+ npl_stack_empty(s);
459459 if (parse(npl_buf_get(NPL_BUF(sbuf)), s)) {
460460 fprintf(stderr, "parse error.\n");
461461 continue;
--- trunk/npl/lang/calci.c (revision 65)
+++ trunk/npl/lang/calci.c (revision 66)
@@ -381,13 +381,13 @@
381381 if (a > (INT_MAX / b))
382382 return 1; // overflow
383383 } else if (a > 0 && b < 0) {
384- if (a > (INT_MIN / b))
384+ if ((b != -1) && (a > (INT_MIN / b)))
385385 return 1; // overflow
386386 } else if (a < 0 && b > 0) {
387- if (b > (INT_MIN / a))
387+ if ((a != -1) && (b > (INT_MIN / a)))
388388 return 1; // overflow
389389 } else {
390- if (-a > (INT_MIN / b))
390+ if ((b != -1) && (-a > (INT_MIN / b)))
391391 return 1; // overflow
392392 }
393393
@@ -894,7 +894,7 @@
894894 break;
895895 }
896896
897- npl_stack_clean(s);
897+ npl_stack_empty(s);
898898 if (parse(npl_buf_get(NPL_BUF(sbuf)), s)) {
899899 fprintf(stderr, "parse error.\n");
900900 continue;
--- trunk/npl/lang/calcf.c (revision 65)
+++ trunk/npl/lang/calcf.c (revision 66)
@@ -829,7 +829,7 @@
829829 break;
830830 }
831831
832- npl_stack_clean(s);
832+ npl_stack_empty(s);
833833 if (parse(npl_buf_get(NPL_BUF(sbuf)), s)) {
834834 fprintf(stderr, "parse error.\n");
835835 continue;
旧リポジトリブラウザで表示