X Tutup
Skip to content

Commit 813fbc9

Browse files
committed
Ensure that we don't reuse the same deserialization struct over pagination iterations
This is to avoid subtle deserialization issues in nested slices.
1 parent a90b62f commit 813fbc9

File tree

3 files changed

+14
-7
lines changed

3 files changed

+14
-7
lines changed

api/queries_org.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99

1010
// OrganizationProjects fetches all open projects for an organization
1111
func OrganizationProjects(client *Client, repo ghrepo.Interface) ([]RepoProject, error) {
12-
var query struct {
12+
type responseData struct {
1313
Organization struct {
1414
Projects struct {
1515
Nodes []RepoProject
@@ -30,6 +30,7 @@ func OrganizationProjects(client *Client, repo ghrepo.Interface) ([]RepoProject,
3030

3131
var projects []RepoProject
3232
for {
33+
var query responseData
3334
err := gql.QueryNamed(context.Background(), "OrganizationProjectList", &query, variables)
3435
if err != nil {
3536
return nil, err
@@ -52,7 +53,7 @@ type OrgTeam struct {
5253

5354
// OrganizationTeams fetches all the teams in an organization
5455
func OrganizationTeams(client *Client, repo ghrepo.Interface) ([]OrgTeam, error) {
55-
var query struct {
56+
type responseData struct {
5657
Organization struct {
5758
Teams struct {
5859
Nodes []OrgTeam
@@ -73,6 +74,7 @@ func OrganizationTeams(client *Client, repo ghrepo.Interface) ([]OrgTeam, error)
7374

7475
var teams []OrgTeam
7576
for {
77+
var query responseData
7678
err := gql.QueryNamed(context.Background(), "OrganizationTeamList", &query, variables)
7779
if err != nil {
7880
return nil, err

api/queries_repo.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -657,7 +657,7 @@ type RepoProject struct {
657657

658658
// RepoProjects fetches all open projects for a repository
659659
func RepoProjects(client *Client, repo ghrepo.Interface) ([]RepoProject, error) {
660-
var query struct {
660+
type responseData struct {
661661
Repository struct {
662662
Projects struct {
663663
Nodes []RepoProject
@@ -679,6 +679,7 @@ func RepoProjects(client *Client, repo ghrepo.Interface) ([]RepoProject, error)
679679

680680
var projects []RepoProject
681681
for {
682+
var query responseData
682683
err := gql.QueryNamed(context.Background(), "RepositoryProjectList", &query, variables)
683684
if err != nil {
684685
return nil, err
@@ -701,7 +702,7 @@ type RepoAssignee struct {
701702

702703
// RepoAssignableUsers fetches all the assignable users for a repository
703704
func RepoAssignableUsers(client *Client, repo ghrepo.Interface) ([]RepoAssignee, error) {
704-
var query struct {
705+
type responseData struct {
705706
Repository struct {
706707
AssignableUsers struct {
707708
Nodes []RepoAssignee
@@ -723,6 +724,7 @@ func RepoAssignableUsers(client *Client, repo ghrepo.Interface) ([]RepoAssignee,
723724

724725
var users []RepoAssignee
725726
for {
727+
var query responseData
726728
err := gql.QueryNamed(context.Background(), "RepositoryAssignableUsers", &query, variables)
727729
if err != nil {
728730
return nil, err
@@ -745,7 +747,7 @@ type RepoLabel struct {
745747

746748
// RepoLabels fetches all the labels in a repository
747749
func RepoLabels(client *Client, repo ghrepo.Interface) ([]RepoLabel, error) {
748-
var query struct {
750+
type responseData struct {
749751
Repository struct {
750752
Labels struct {
751753
Nodes []RepoLabel
@@ -767,6 +769,7 @@ func RepoLabels(client *Client, repo ghrepo.Interface) ([]RepoLabel, error) {
767769

768770
var labels []RepoLabel
769771
for {
772+
var query responseData
770773
err := gql.QueryNamed(context.Background(), "RepositoryLabelList", &query, variables)
771774
if err != nil {
772775
return nil, err
@@ -789,7 +792,7 @@ type RepoMilestone struct {
789792

790793
// RepoMilestones fetches all open milestones in a repository
791794
func RepoMilestones(client *Client, repo ghrepo.Interface) ([]RepoMilestone, error) {
792-
var query struct {
795+
type responseData struct {
793796
Repository struct {
794797
Milestones struct {
795798
Nodes []RepoMilestone
@@ -811,6 +814,7 @@ func RepoMilestones(client *Client, repo ghrepo.Interface) ([]RepoMilestone, err
811814

812815
var milestones []RepoMilestone
813816
for {
817+
var query responseData
814818
err := gql.QueryNamed(context.Background(), "RepositoryMilestoneList", &query, variables)
815819
if err != nil {
816820
return nil, err

pkg/cmd/release/list/http.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ type Release struct {
2121
}
2222

2323
func fetchReleases(httpClient *http.Client, repo ghrepo.Interface, limit int) ([]Release, error) {
24-
var query struct {
24+
type responseData struct {
2525
Repository struct {
2626
Releases struct {
2727
Nodes []Release
@@ -50,6 +50,7 @@ func fetchReleases(httpClient *http.Client, repo ghrepo.Interface, limit int) ([
5050
var releases []Release
5151
loop:
5252
for {
53+
var query responseData
5354
err := gql.QueryNamed(context.Background(), "RepositoryReleaseList", &query, variables)
5455
if err != nil {
5556
return nil, err

0 commit comments

Comments
 (0)
X Tutup