8
8
*
9
9
*
10
10
* IDENTIFICATION
11
- * $PostgreSQL: pgsql/src/backend/utils/fmgr/fmgr.c,v 1.106 2007/04/06 04:21:43 tgl Exp $
11
+ * $PostgreSQL: pgsql/src/backend/utils/fmgr/fmgr.c,v 1.107 2007/07/13 02:25:48 tgl Exp $
12
12
*
13
13
*-------------------------------------------------------------------------
14
14
*/
38
38
* declare the function pointer to return int, so the compiler picks up the
39
39
* return value from %d0. (Functions returning pointers put their value
40
40
* *additionally* into %d0 for compatibility.) The price is that there are
41
- * some warnings about int->pointer conversions...
41
+ * some warnings about int->pointer conversions ... which we can suppress
42
+ * with suitably ugly casts in fmgr_oldstyle().
42
43
*/
43
44
#if (defined(__mc68000__ ) || (defined(__m68k__ ))) && defined(__ELF__ )
44
45
typedef int32 (* func_ptr ) ();
@@ -626,7 +627,7 @@ fmgr_oldstyle(PG_FUNCTION_ARGS)
626
627
switch (n_arguments )
627
628
{
628
629
case 0 :
629
- returnValue = (* user_fn ) ();
630
+ returnValue = (char * ) ( * user_fn ) ();
630
631
break ;
631
632
case 1 :
632
633
@@ -635,108 +636,173 @@ fmgr_oldstyle(PG_FUNCTION_ARGS)
635
636
* there are other functions still out there that also rely on
636
637
* this undocumented hack?
637
638
*/
638
- returnValue = (* user_fn ) (fcinfo -> arg [0 ], & fcinfo -> isnull );
639
+ returnValue = (char * ) (* user_fn ) (fcinfo -> arg [0 ],
640
+ & fcinfo -> isnull );
639
641
break ;
640
642
case 2 :
641
- returnValue = (* user_fn ) (fcinfo -> arg [0 ], fcinfo -> arg [1 ]);
643
+ returnValue = (char * ) (* user_fn ) (fcinfo -> arg [0 ],
644
+ fcinfo -> arg [1 ]);
642
645
break ;
643
646
case 3 :
644
- returnValue = (* user_fn ) (fcinfo -> arg [0 ], fcinfo -> arg [1 ],
645
- fcinfo -> arg [2 ]);
647
+ returnValue = (char * ) (* user_fn ) (fcinfo -> arg [0 ],
648
+ fcinfo -> arg [1 ],
649
+ fcinfo -> arg [2 ]);
646
650
break ;
647
651
case 4 :
648
- returnValue = (* user_fn ) (fcinfo -> arg [0 ], fcinfo -> arg [1 ],
649
- fcinfo -> arg [2 ], fcinfo -> arg [3 ]);
652
+ returnValue = (char * ) (* user_fn ) (fcinfo -> arg [0 ],
653
+ fcinfo -> arg [1 ],
654
+ fcinfo -> arg [2 ],
655
+ fcinfo -> arg [3 ]);
650
656
break ;
651
657
case 5 :
652
- returnValue = (* user_fn ) (fcinfo -> arg [0 ], fcinfo -> arg [1 ],
653
- fcinfo -> arg [2 ], fcinfo -> arg [3 ],
654
- fcinfo -> arg [4 ]);
658
+ returnValue = (char * ) (* user_fn ) (fcinfo -> arg [0 ],
659
+ fcinfo -> arg [1 ],
660
+ fcinfo -> arg [2 ],
661
+ fcinfo -> arg [3 ],
662
+ fcinfo -> arg [4 ]);
655
663
break ;
656
664
case 6 :
657
- returnValue = (* user_fn ) (fcinfo -> arg [0 ], fcinfo -> arg [1 ],
658
- fcinfo -> arg [2 ], fcinfo -> arg [3 ],
659
- fcinfo -> arg [4 ], fcinfo -> arg [5 ]);
665
+ returnValue = (char * ) (* user_fn ) (fcinfo -> arg [0 ],
666
+ fcinfo -> arg [1 ],
667
+ fcinfo -> arg [2 ],
668
+ fcinfo -> arg [3 ],
669
+ fcinfo -> arg [4 ],
670
+ fcinfo -> arg [5 ]);
660
671
break ;
661
672
case 7 :
662
- returnValue = (* user_fn ) (fcinfo -> arg [0 ], fcinfo -> arg [1 ],
663
- fcinfo -> arg [2 ], fcinfo -> arg [3 ],
664
- fcinfo -> arg [4 ], fcinfo -> arg [5 ],
665
- fcinfo -> arg [6 ]);
673
+ returnValue = (char * ) (* user_fn ) (fcinfo -> arg [0 ],
674
+ fcinfo -> arg [1 ],
675
+ fcinfo -> arg [2 ],
676
+ fcinfo -> arg [3 ],
677
+ fcinfo -> arg [4 ],
678
+ fcinfo -> arg [5 ],
679
+ fcinfo -> arg [6 ]);
666
680
break ;
667
681
case 8 :
668
- returnValue = (* user_fn ) (fcinfo -> arg [0 ], fcinfo -> arg [1 ],
669
- fcinfo -> arg [2 ], fcinfo -> arg [3 ],
670
- fcinfo -> arg [4 ], fcinfo -> arg [5 ],
671
- fcinfo -> arg [6 ], fcinfo -> arg [7 ]);
682
+ returnValue = (char * ) (* user_fn ) (fcinfo -> arg [0 ],
683
+ fcinfo -> arg [1 ],
684
+ fcinfo -> arg [2 ],
685
+ fcinfo -> arg [3 ],
686
+ fcinfo -> arg [4 ],
687
+ fcinfo -> arg [5 ],
688
+ fcinfo -> arg [6 ],
689
+ fcinfo -> arg [7 ]);
672
690
break ;
673
691
case 9 :
674
- returnValue = (* user_fn ) (fcinfo -> arg [0 ], fcinfo -> arg [1 ],
675
- fcinfo -> arg [2 ], fcinfo -> arg [3 ],
676
- fcinfo -> arg [4 ], fcinfo -> arg [5 ],
677
- fcinfo -> arg [6 ], fcinfo -> arg [7 ],
678
- fcinfo -> arg [8 ]);
692
+ returnValue = (char * ) (* user_fn ) (fcinfo -> arg [0 ],
693
+ fcinfo -> arg [1 ],
694
+ fcinfo -> arg [2 ],
695
+ fcinfo -> arg [3 ],
696
+ fcinfo -> arg [4 ],
697
+ fcinfo -> arg [5 ],
698
+ fcinfo -> arg [6 ],
699
+ fcinfo -> arg [7 ],
700
+ fcinfo -> arg [8 ]);
679
701
break ;
680
702
case 10 :
681
- returnValue = (* user_fn ) (fcinfo -> arg [0 ], fcinfo -> arg [1 ],
682
- fcinfo -> arg [2 ], fcinfo -> arg [3 ],
683
- fcinfo -> arg [4 ], fcinfo -> arg [5 ],
684
- fcinfo -> arg [6 ], fcinfo -> arg [7 ],
685
- fcinfo -> arg [8 ], fcinfo -> arg [9 ]);
703
+ returnValue = (char * ) (* user_fn ) (fcinfo -> arg [0 ],
704
+ fcinfo -> arg [1 ],
705
+ fcinfo -> arg [2 ],
706
+ fcinfo -> arg [3 ],
707
+ fcinfo -> arg [4 ],
708
+ fcinfo -> arg [5 ],
709
+ fcinfo -> arg [6 ],
710
+ fcinfo -> arg [7 ],
711
+ fcinfo -> arg [8 ],
712
+ fcinfo -> arg [9 ]);
686
713
break ;
687
714
case 11 :
688
- returnValue = (* user_fn ) (fcinfo -> arg [0 ], fcinfo -> arg [1 ],
689
- fcinfo -> arg [2 ], fcinfo -> arg [3 ],
690
- fcinfo -> arg [4 ], fcinfo -> arg [5 ],
691
- fcinfo -> arg [6 ], fcinfo -> arg [7 ],
692
- fcinfo -> arg [8 ], fcinfo -> arg [9 ],
693
- fcinfo -> arg [10 ]);
715
+ returnValue = (char * ) (* user_fn ) (fcinfo -> arg [0 ],
716
+ fcinfo -> arg [1 ],
717
+ fcinfo -> arg [2 ],
718
+ fcinfo -> arg [3 ],
719
+ fcinfo -> arg [4 ],
720
+ fcinfo -> arg [5 ],
721
+ fcinfo -> arg [6 ],
722
+ fcinfo -> arg [7 ],
723
+ fcinfo -> arg [8 ],
724
+ fcinfo -> arg [9 ],
725
+ fcinfo -> arg [10 ]);
694
726
break ;
695
727
case 12 :
696
- returnValue = (* user_fn ) (fcinfo -> arg [0 ], fcinfo -> arg [1 ],
697
- fcinfo -> arg [2 ], fcinfo -> arg [3 ],
698
- fcinfo -> arg [4 ], fcinfo -> arg [5 ],
699
- fcinfo -> arg [6 ], fcinfo -> arg [7 ],
700
- fcinfo -> arg [8 ], fcinfo -> arg [9 ],
701
- fcinfo -> arg [10 ], fcinfo -> arg [11 ]);
728
+ returnValue = (char * ) (* user_fn ) (fcinfo -> arg [0 ],
729
+ fcinfo -> arg [1 ],
730
+ fcinfo -> arg [2 ],
731
+ fcinfo -> arg [3 ],
732
+ fcinfo -> arg [4 ],
733
+ fcinfo -> arg [5 ],
734
+ fcinfo -> arg [6 ],
735
+ fcinfo -> arg [7 ],
736
+ fcinfo -> arg [8 ],
737
+ fcinfo -> arg [9 ],
738
+ fcinfo -> arg [10 ],
739
+ fcinfo -> arg [11 ]);
702
740
break ;
703
741
case 13 :
704
- returnValue = (* user_fn ) (fcinfo -> arg [0 ], fcinfo -> arg [1 ],
705
- fcinfo -> arg [2 ], fcinfo -> arg [3 ],
706
- fcinfo -> arg [4 ], fcinfo -> arg [5 ],
707
- fcinfo -> arg [6 ], fcinfo -> arg [7 ],
708
- fcinfo -> arg [8 ], fcinfo -> arg [9 ],
709
- fcinfo -> arg [10 ], fcinfo -> arg [11 ],
710
- fcinfo -> arg [12 ]);
742
+ returnValue = (char * ) (* user_fn ) (fcinfo -> arg [0 ],
743
+ fcinfo -> arg [1 ],
744
+ fcinfo -> arg [2 ],
745
+ fcinfo -> arg [3 ],
746
+ fcinfo -> arg [4 ],
747
+ fcinfo -> arg [5 ],
748
+ fcinfo -> arg [6 ],
749
+ fcinfo -> arg [7 ],
750
+ fcinfo -> arg [8 ],
751
+ fcinfo -> arg [9 ],
752
+ fcinfo -> arg [10 ],
753
+ fcinfo -> arg [11 ],
754
+ fcinfo -> arg [12 ]);
711
755
break ;
712
756
case 14 :
713
- returnValue = (* user_fn ) (fcinfo -> arg [0 ], fcinfo -> arg [1 ],
714
- fcinfo -> arg [2 ], fcinfo -> arg [3 ],
715
- fcinfo -> arg [4 ], fcinfo -> arg [5 ],
716
- fcinfo -> arg [6 ], fcinfo -> arg [7 ],
717
- fcinfo -> arg [8 ], fcinfo -> arg [9 ],
718
- fcinfo -> arg [10 ], fcinfo -> arg [11 ],
719
- fcinfo -> arg [12 ], fcinfo -> arg [13 ]);
757
+ returnValue = (char * ) (* user_fn ) (fcinfo -> arg [0 ],
758
+ fcinfo -> arg [1 ],
759
+ fcinfo -> arg [2 ],
760
+ fcinfo -> arg [3 ],
761
+ fcinfo -> arg [4 ],
762
+ fcinfo -> arg [5 ],
763
+ fcinfo -> arg [6 ],
764
+ fcinfo -> arg [7 ],
765
+ fcinfo -> arg [8 ],
766
+ fcinfo -> arg [9 ],
767
+ fcinfo -> arg [10 ],
768
+ fcinfo -> arg [11 ],
769
+ fcinfo -> arg [12 ],
770
+ fcinfo -> arg [13 ]);
720
771
break ;
721
772
case 15 :
722
- returnValue = (* user_fn ) (fcinfo -> arg [0 ], fcinfo -> arg [1 ],
723
- fcinfo -> arg [2 ], fcinfo -> arg [3 ],
724
- fcinfo -> arg [4 ], fcinfo -> arg [5 ],
725
- fcinfo -> arg [6 ], fcinfo -> arg [7 ],
726
- fcinfo -> arg [8 ], fcinfo -> arg [9 ],
727
- fcinfo -> arg [10 ], fcinfo -> arg [11 ],
728
- fcinfo -> arg [12 ], fcinfo -> arg [13 ],
729
- fcinfo -> arg [14 ]);
773
+ returnValue = (char * ) (* user_fn ) (fcinfo -> arg [0 ],
774
+ fcinfo -> arg [1 ],
775
+ fcinfo -> arg [2 ],
776
+ fcinfo -> arg [3 ],
777
+ fcinfo -> arg [4 ],
778
+ fcinfo -> arg [5 ],
779
+ fcinfo -> arg [6 ],
780
+ fcinfo -> arg [7 ],
781
+ fcinfo -> arg [8 ],
782
+ fcinfo -> arg [9 ],
783
+ fcinfo -> arg [10 ],
784
+ fcinfo -> arg [11 ],
785
+ fcinfo -> arg [12 ],
786
+ fcinfo -> arg [13 ],
787
+ fcinfo -> arg [14 ]);
730
788
break ;
731
789
case 16 :
732
- returnValue = (* user_fn ) (fcinfo -> arg [0 ], fcinfo -> arg [1 ],
733
- fcinfo -> arg [2 ], fcinfo -> arg [3 ],
734
- fcinfo -> arg [4 ], fcinfo -> arg [5 ],
735
- fcinfo -> arg [6 ], fcinfo -> arg [7 ],
736
- fcinfo -> arg [8 ], fcinfo -> arg [9 ],
737
- fcinfo -> arg [10 ], fcinfo -> arg [11 ],
738
- fcinfo -> arg [12 ], fcinfo -> arg [13 ],
739
- fcinfo -> arg [14 ], fcinfo -> arg [15 ]);
790
+ returnValue = (char * ) (* user_fn ) (fcinfo -> arg [0 ],
791
+ fcinfo -> arg [1 ],
792
+ fcinfo -> arg [2 ],
793
+ fcinfo -> arg [3 ],
794
+ fcinfo -> arg [4 ],
795
+ fcinfo -> arg [5 ],
796
+ fcinfo -> arg [6 ],
797
+ fcinfo -> arg [7 ],
798
+ fcinfo -> arg [8 ],
799
+ fcinfo -> arg [9 ],
800
+ fcinfo -> arg [10 ],
801
+ fcinfo -> arg [11 ],
802
+ fcinfo -> arg [12 ],
803
+ fcinfo -> arg [13 ],
804
+ fcinfo -> arg [14 ],
805
+ fcinfo -> arg [15 ]);
740
806
break ;
741
807
default :
742
808
0 commit comments