New Delhi - India's Supreme Court Wednesday upheld a colonial-era law criminalising homosexuality in a landmark judgment that crushes activists' hopes for guarantees on sexual freedom in the world's biggest democracy.