فهرست منبع

Update py_list.c

blueloveTH 1 سال پیش
والد
کامیت
894ef0a5b5
1فایلهای تغییر یافته به همراه4 افزوده شده و 3 حذف شده
  1. 4 3
      src/public/py_list.c

+ 4 - 3
src/public/py_list.c

@@ -244,9 +244,10 @@ static bool list__repr__(int argc, py_Ref argv) {
 static bool list_extend(int argc, py_Ref argv) {
 static bool list_extend(int argc, py_Ref argv) {
     PY_CHECK_ARGC(2);
     PY_CHECK_ARGC(2);
     List* self = py_touserdata(py_arg(0));
     List* self = py_touserdata(py_arg(0));
-    PY_CHECK_ARG_TYPE(1, tp_list);
-    List* other = py_touserdata(py_arg(1));
-    c11_vector__extend(py_TValue, self, other->data, other->length);
+    py_TValue* p;
+    int length = pk_arrayview(py_arg(1), &p);
+    if(length == -1) return TypeError("extend() argument must be a list or tuple");
+    c11_vector__extend(py_TValue, self, p, length);
     py_newnone(py_retval());
     py_newnone(py_retval());
     return true;
     return true;
 }
 }