Skip to content

Commit 357e716

Browse files
author
Adam Cozzette
authored
Merge pull request #9588 from protocolbuffers/master
Merge master into 3.20.x
2 parents 276add0 + 24a0659 commit 357e716

File tree

38 files changed

+8915
-6306
lines changed

38 files changed

+8915
-6306
lines changed

csharp/src/Google.Protobuf.Test/CodedInputStreamTest.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -716,6 +716,25 @@ public void TestSlowPathAvoidance()
716716
}
717717
}
718718

719+
[Test]
720+
public void MaximumFieldNumber()
721+
{
722+
MemoryStream ms = new MemoryStream();
723+
CodedOutputStream output = new CodedOutputStream(ms);
724+
725+
int fieldNumber = 0x1FFFFFFF;
726+
uint tag = WireFormat.MakeTag(fieldNumber, WireFormat.WireType.LengthDelimited);
727+
output.WriteRawVarint32(tag);
728+
output.WriteString("field 1");
729+
output.Flush();
730+
ms.Position = 0;
731+
732+
CodedInputStream input = new CodedInputStream(ms);
733+
734+
Assert.AreEqual(tag, input.ReadTag());
735+
Assert.AreEqual(fieldNumber, WireFormat.GetTagFieldNumber(tag));
736+
}
737+
719738
[Test]
720739
public void Tag0Throws()
721740
{

csharp/src/Google.Protobuf/WireFormat.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public static WireType GetTagWireType(uint tag)
9090
/// </summary>
9191
public static int GetTagFieldNumber(uint tag)
9292
{
93-
return (int) tag >> TagTypeBits;
93+
return (int) (tag >> TagTypeBits);
9494
}
9595

9696
/// <summary>

php/ext/google/protobuf/arena.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838

3939
typedef struct Arena {
4040
zend_object std;
41-
upb_arena* arena;
41+
upb_Arena* arena;
4242
} Arena;
4343

4444
zend_class_entry *Arena_class_entry;
@@ -50,14 +50,14 @@ static zend_object* Arena_Create(zend_class_entry *class_type) {
5050
Arena *intern = emalloc(sizeof(Arena));
5151
zend_object_std_init(&intern->std, class_type);
5252
intern->std.handlers = &Arena_object_handlers;
53-
intern->arena = upb_arena_new();
53+
intern->arena = upb_Arena_New();
5454
// Skip object_properties_init(), we don't allow derived classes.
5555
return &intern->std;
5656
}
5757

5858
static void Arena_Free(zend_object* obj) {
5959
Arena* intern = (Arena*)obj;
60-
upb_arena_free(intern->arena);
60+
upb_Arena_Free(intern->arena);
6161
zend_object_std_dtor(&intern->std);
6262
}
6363

@@ -67,7 +67,7 @@ void Arena_Init(zval* val) {
6767
ZVAL_OBJ(val, Arena_Create(Arena_class_entry));
6868
}
6969

70-
upb_arena *Arena_Get(zval *val) {
70+
upb_Arena *Arena_Get(zval *val) {
7171
Arena *a = (Arena*)Z_OBJ_P(val);
7272
return a->arena;
7373
}

php/ext/google/protobuf/arena.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@
3838
// Registers the PHP Arena class.
3939
void Arena_ModuleInit();
4040

41-
// Creates and returns a new arena object that wraps a new upb_arena*.
41+
// Creates and returns a new arena object that wraps a new upb_Arena*.
4242
void Arena_Init(zval *val);
4343

44-
// Gets the underlying upb_arena from this arena object.
45-
upb_arena *Arena_Get(zval *arena);
44+
// Gets the underlying upb_Arena from this arena object.
45+
upb_Arena *Arena_Get(zval *arena);
4646

4747
#endif // PHP_PROTOBUF_ARENA_H_

php/ext/google/protobuf/array.c

Lines changed: 43 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ static void RepeatedFieldIter_make(zval *val, zval *repeated_field);
5454
typedef struct {
5555
zend_object std;
5656
zval arena;
57-
upb_array *array;
57+
upb_Array *array;
5858
TypeInfo type;
5959
} RepeatedField;
6060

@@ -120,14 +120,14 @@ static int RepeatedField_compare_objects(zval *rf1, zval *rf2) {
120120
*/
121121
static zend_object *RepeatedField_clone_obj(PROTO_VAL *object) {
122122
RepeatedField* intern = PROTO_VAL_P(object);
123-
upb_arena *arena = Arena_Get(&intern->arena);
124-
upb_array *clone = upb_array_new(arena, intern->type.type);
125-
size_t n = upb_array_size(intern->array);
123+
upb_Arena *arena = Arena_Get(&intern->arena);
124+
upb_Array *clone = upb_Array_New(arena, intern->type.type);
125+
size_t n = upb_Array_Size(intern->array);
126126
size_t i;
127127

128128
for (i = 0; i < n; i++) {
129-
upb_msgval msgval = upb_array_get(intern->array, i);
130-
upb_array_append(clone, msgval, arena);
129+
upb_MessageValue msgval = upb_Array_Get(intern->array, i);
130+
upb_Array_Append(clone, msgval, arena);
131131
}
132132

133133
zval ret;
@@ -149,7 +149,7 @@ static zval *RepeatedField_GetPropertyPtrPtr(PROTO_VAL *object,
149149

150150
// These are documented in the header file.
151151

152-
void RepeatedField_GetPhpWrapper(zval *val, upb_array *arr, TypeInfo type,
152+
void RepeatedField_GetPhpWrapper(zval *val, upb_Array *arr, TypeInfo type,
153153
zval *arena) {
154154
if (!arr) {
155155
ZVAL_NULL(val);
@@ -169,64 +169,64 @@ void RepeatedField_GetPhpWrapper(zval *val, upb_array *arr, TypeInfo type,
169169
}
170170
}
171171

172-
upb_array *RepeatedField_GetUpbArray(zval *val, TypeInfo type,
173-
upb_arena *arena) {
172+
upb_Array *RepeatedField_GetUpbArray(zval *val, TypeInfo type,
173+
upb_Arena *arena) {
174174
if (Z_ISREF_P(val)) {
175175
ZVAL_DEREF(val);
176176
}
177177

178178
if (Z_TYPE_P(val) == IS_ARRAY) {
179-
// Auto-construct, eg. [1, 2, 3] -> upb_array([1, 2, 3]).
180-
upb_array *arr = upb_array_new(arena, type.type);
179+
// Auto-construct, eg. [1, 2, 3] -> upb_Array([1, 2, 3]).
180+
upb_Array *arr = upb_Array_New(arena, type.type);
181181
HashTable *table = HASH_OF(val);
182182
HashPosition pos;
183183

184184
zend_hash_internal_pointer_reset_ex(table, &pos);
185185

186186
while (true) {
187187
zval *zv = zend_hash_get_current_data_ex(table, &pos);
188-
upb_msgval val;
188+
upb_MessageValue val;
189189

190190
if (!zv) return arr;
191191

192192
if (!Convert_PhpToUpbAutoWrap(zv, &val, type, arena)) {
193193
return NULL;
194194
}
195195

196-
upb_array_append(arr, val, arena);
196+
upb_Array_Append(arr, val, arena);
197197
zend_hash_move_forward_ex(table, &pos);
198198
}
199199
} else if (Z_TYPE_P(val) == IS_OBJECT &&
200200
Z_OBJCE_P(val) == RepeatedField_class_entry) {
201-
// Unwrap existing RepeatedField object to get the upb_array* inside.
201+
// Unwrap existing RepeatedField object to get the upb_Array* inside.
202202
RepeatedField *intern = (RepeatedField*)Z_OBJ_P(val);
203203

204204
if (!TypeInfo_Eq(intern->type, type)) {
205205
php_error_docref(NULL, E_USER_ERROR,
206206
"Wrong type for this repeated field.");
207207
}
208208

209-
upb_arena_fuse(arena, Arena_Get(&intern->arena));
209+
upb_Arena_Fuse(arena, Arena_Get(&intern->arena));
210210
return intern->array;
211211
} else {
212212
php_error_docref(NULL, E_USER_ERROR, "Must be a repeated field");
213213
return NULL;
214214
}
215215
}
216216

217-
bool ArrayEq(const upb_array *a1, const upb_array *a2, TypeInfo type) {
217+
bool ArrayEq(const upb_Array *a1, const upb_Array *a2, TypeInfo type) {
218218
size_t i;
219219
size_t n;
220220

221221
if ((a1 == NULL) != (a2 == NULL)) return false;
222222
if (a1 == NULL) return true;
223223

224-
n = upb_array_size(a1);
225-
if (n != upb_array_size(a2)) return false;
224+
n = upb_Array_Size(a1);
225+
if (n != upb_Array_Size(a2)) return false;
226226

227227
for (i = 0; i < n; i++) {
228-
upb_msgval val1 = upb_array_get(a1, i);
229-
upb_msgval val2 = upb_array_get(a2, i);
228+
upb_MessageValue val1 = upb_Array_Get(a1, i);
229+
upb_MessageValue val2 = upb_Array_Get(a2, i);
230230
if (!ValueEq(val1, val2, type)) return false;
231231
}
232232

@@ -245,7 +245,7 @@ bool ArrayEq(const upb_array *a1, const upb_array *a2, TypeInfo type) {
245245
*/
246246
PHP_METHOD(RepeatedField, __construct) {
247247
RepeatedField *intern = (RepeatedField*)Z_OBJ_P(getThis());
248-
upb_arena *arena = Arena_Get(&intern->arena);
248+
upb_Arena *arena = Arena_Get(&intern->arena);
249249
zend_long type;
250250
zend_class_entry* klass = NULL;
251251

@@ -256,13 +256,13 @@ PHP_METHOD(RepeatedField, __construct) {
256256
intern->type.type = pbphp_dtype_to_type(type);
257257
intern->type.desc = Descriptor_GetFromClassEntry(klass);
258258

259-
if (intern->type.type == UPB_TYPE_MESSAGE && klass == NULL) {
259+
if (intern->type.type == kUpb_CType_Message && klass == NULL) {
260260
php_error_docref(NULL, E_USER_ERROR,
261261
"Message/enum type must have concrete class.");
262262
return;
263263
}
264264

265-
intern->array = upb_array_new(arena, intern->type.type);
265+
intern->array = upb_Array_New(arena, intern->type.type);
266266
ObjCache_Add(intern->array, &intern->std);
267267
}
268268

@@ -274,16 +274,16 @@ PHP_METHOD(RepeatedField, __construct) {
274274
*/
275275
PHP_METHOD(RepeatedField, append) {
276276
RepeatedField *intern = (RepeatedField*)Z_OBJ_P(getThis());
277-
upb_arena *arena = Arena_Get(&intern->arena);
277+
upb_Arena *arena = Arena_Get(&intern->arena);
278278
zval *php_val;
279-
upb_msgval msgval;
279+
upb_MessageValue msgval;
280280

281281
if (zend_parse_parameters(ZEND_NUM_ARGS(), "z", &php_val) != SUCCESS ||
282282
!Convert_PhpToUpb(php_val, &msgval, intern->type, arena)) {
283283
return;
284284
}
285285

286-
upb_array_append(intern->array, msgval, arena);
286+
upb_Array_Append(intern->array, msgval, arena);
287287
}
288288

289289
/**
@@ -305,7 +305,7 @@ PHP_METHOD(RepeatedField, offsetExists) {
305305
return;
306306
}
307307

308-
RETURN_BOOL(index >= 0 && index < upb_array_size(intern->array));
308+
RETURN_BOOL(index >= 0 && index < upb_Array_Size(intern->array));
309309
}
310310

311311
/**
@@ -323,19 +323,19 @@ PHP_METHOD(RepeatedField, offsetExists) {
323323
PHP_METHOD(RepeatedField, offsetGet) {
324324
RepeatedField *intern = (RepeatedField*)Z_OBJ_P(getThis());
325325
zend_long index;
326-
upb_msgval msgval;
326+
upb_MessageValue msgval;
327327
zval ret;
328328

329329
if (zend_parse_parameters(ZEND_NUM_ARGS(), "l", &index) == FAILURE) {
330330
return;
331331
}
332332

333-
if (index < 0 || index >= upb_array_size(intern->array)) {
333+
if (index < 0 || index >= upb_Array_Size(intern->array)) {
334334
zend_error(E_USER_ERROR, "Element at %ld doesn't exist.\n", index);
335335
return;
336336
}
337337

338-
msgval = upb_array_get(intern->array, index);
338+
msgval = upb_Array_Get(intern->array, index);
339339
Convert_UpbToPhp(msgval, &ret, intern->type, &intern->arena);
340340
RETURN_COPY_VALUE(&ret);
341341
}
@@ -356,11 +356,11 @@ PHP_METHOD(RepeatedField, offsetGet) {
356356
*/
357357
PHP_METHOD(RepeatedField, offsetSet) {
358358
RepeatedField *intern = (RepeatedField*)Z_OBJ_P(getThis());
359-
upb_arena *arena = Arena_Get(&intern->arena);
360-
size_t size = upb_array_size(intern->array);
359+
upb_Arena *arena = Arena_Get(&intern->arena);
360+
size_t size = upb_Array_Size(intern->array);
361361
zval *offset, *val;
362362
int64_t index;
363-
upb_msgval msgval;
363+
upb_MessageValue msgval;
364364

365365
if (zend_parse_parameters(ZEND_NUM_ARGS(), "zz", &offset, &val) != SUCCESS) {
366366
return;
@@ -379,9 +379,9 @@ PHP_METHOD(RepeatedField, offsetSet) {
379379
if (index > size) {
380380
zend_error(E_USER_ERROR, "Element at index %ld doesn't exist.\n", index);
381381
} else if (index == size) {
382-
upb_array_append(intern->array, msgval, Arena_Get(&intern->arena));
382+
upb_Array_Append(intern->array, msgval, Arena_Get(&intern->arena));
383383
} else {
384-
upb_array_set(intern->array, index, msgval);
384+
upb_Array_Set(intern->array, index, msgval);
385385
}
386386
}
387387

@@ -399,7 +399,7 @@ PHP_METHOD(RepeatedField, offsetSet) {
399399
PHP_METHOD(RepeatedField, offsetUnset) {
400400
RepeatedField *intern = (RepeatedField*)Z_OBJ_P(getThis());
401401
zend_long index;
402-
zend_long size = upb_array_size(intern->array);
402+
zend_long size = upb_Array_Size(intern->array);
403403

404404
// Only the element at the end of the array can be removed.
405405
if (zend_parse_parameters(ZEND_NUM_ARGS(), "l", &index) != SUCCESS) {
@@ -412,7 +412,7 @@ PHP_METHOD(RepeatedField, offsetUnset) {
412412
return;
413413
}
414414

415-
upb_array_resize(intern->array, size - 1, Arena_Get(&intern->arena));
415+
upb_Array_Resize(intern->array, size - 1, Arena_Get(&intern->arena));
416416
}
417417

418418
/**
@@ -432,7 +432,7 @@ PHP_METHOD(RepeatedField, count) {
432432
return;
433433
}
434434

435-
RETURN_LONG(upb_array_size(intern->array));
435+
RETURN_LONG(upb_Array_Size(intern->array));
436436
}
437437

438438
/**
@@ -581,16 +581,16 @@ PHP_METHOD(RepeatedFieldIter, rewind) {
581581
PHP_METHOD(RepeatedFieldIter, current) {
582582
RepeatedFieldIter *intern = (RepeatedFieldIter*)Z_OBJ_P(getThis());
583583
RepeatedField *field = (RepeatedField*)Z_OBJ_P(&intern->repeated_field);
584-
upb_array *array = field->array;
584+
upb_Array *array = field->array;
585585
zend_long index = intern->position;
586-
upb_msgval msgval;
586+
upb_MessageValue msgval;
587587
zval ret;
588588

589-
if (index < 0 || index >= upb_array_size(array)) {
589+
if (index < 0 || index >= upb_Array_Size(array)) {
590590
zend_error(E_USER_ERROR, "Element at %ld doesn't exist.\n", index);
591591
}
592592

593-
msgval = upb_array_get(array, index);
593+
msgval = upb_Array_Get(array, index);
594594

595595
Convert_UpbToPhp(msgval, &ret, field->type, &field->arena);
596596
RETURN_COPY_VALUE(&ret);
@@ -624,7 +624,7 @@ PHP_METHOD(RepeatedFieldIter, next) {
624624
PHP_METHOD(RepeatedFieldIter, valid) {
625625
RepeatedFieldIter *intern = (RepeatedFieldIter*)Z_OBJ_P(getThis());
626626
RepeatedField *field = (RepeatedField*)Z_OBJ_P(&intern->repeated_field);
627-
RETURN_BOOL(intern->position < upb_array_size(field->array));
627+
RETURN_BOOL(intern->position < upb_Array_Size(field->array));
628628
}
629629

630630
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_current, 0, 0, IS_MIXED, 0)

0 commit comments

Comments
 (0)